PowerShellで関数実行後に標準出力されるプロパティを指定する

たっとえばGet-ChildItemすると返ってくるオブジェクトはたくさんプロパティがあるけど表示はさっぱりしてるわけですよ
ああいうのを自前のpsobjectを返す関数なんかでもやりたいなって
やり方ちっともわかんなかった(というかどんなワードでググればヒットするのかわかんなかった)んだけど今日判明しました
ありがとうサンタさん

この関数に対象オブジェクトと表示したいプロパティを配列で渡せばバッチリってすんぽーよ

こんな関数があったとすらーな

function Get-NameOfWeekday {
    [CmdletBinding()]
    param()
    $result = @()
    $result += New-Object psobject -Property @{en="Monday"; jp="月曜日"; No=1}
    $result += New-Object psobject -Property @{en="Tuesday"; jp="火曜日"; No=2}
    $result += New-Object psobject -Property @{en="Wednesday"; jp="水曜日"; No=3}
    $result += New-Object psobject -Property @{en="Thursday"; jp="木曜日"; No=4}
    $result += New-Object psobject -Property @{en="Friday"; jp="金曜日"; No=5}
    $result += New-Object psobject -Property @{en="Saturday"; jp="土曜日"; No=6}
    $result += New-Object psobject -Property @{en="Sunday"; jp="日曜日"; No=0}

    return $result
}

プロパティが全部表示されちゃいますね

PS> Get-NameOfWeekday | ft -AutoSize

No en        jp
-- --        --
 1 Monday    月曜日
 2 Tuesday   火曜日
 3 Wednesday 水曜日
 4 Thursday  木曜日
 5 Friday    金曜日
 6 Saturday  土曜日
 0 Sunday    日曜日

でも表示は日本語だけでいいんだよ!ってことがまぁ、あるわけです
returnする前にこうしとく

$result | Set-DefaultDisplayPropertySet @('jp')

すると

PS> Get-NameOfWeekday -OutVariable Week

jp
--
月曜日
火曜日
水曜日
木曜日
金曜日
土曜日
日曜日

日本語だけ表示されました!
そして

PS> $Week | select No,en | ft -AutoSize

No en
-- --
 1 Monday
 2 Tuesday
 3 Wednesday
 4 Thursday
 5 Friday
 6 Saturday
 0 Sunday

返ってきたオブジェクトにはちゃんと残りのプロパティも含まれてるってわけよ

よかったよかった

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中