プロパティ名を変更するには「算出プロパティ」(集計プロパティ)を使えば良い。
「算出プロパティ」はハッシュテーブルの形式で指定するので項目が多いとちょっと面倒だ。
そこで名称を単純に配列で指定できるようにしようというTipsがあったのでメモしておく。
PowerShell Tips
改行箇所を調整しているが基本的にそのまま転載。
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 | $data = @(tasklist /V /FO CSV | ConvertFrom-Csv) $columns = $data[0].PSObject.Properties | Where-Object { $_.MemberType -eq 'NoteProperty' } | Select-Object -ExpandProperty Name $columnNames = 'Name', 'ID', 'Session', 'SessionID', 'Memory', 'Status', 'Owner', 'CPU', 'Title' $customProperties = $columns | %{$i=0}{ @{ Name = $columnNames[$i] Expression=[ScriptBlock]::Create(('$_.''{0}''' -f $columns[$i])) } $i++ } $data | Select-Object -Property $customProperties |
若干判り辛いので説明を書いておく。
1行目で「tasklist」コマンドでプロセスの一覧を取得している。
「Get-Process」を使っていないのは今回の例で言えば特に理由は無いが、そのまま使用している。
結果は、そのままだと以下のように表示される。
ここで、 19行目を「算出プロパティ」で直接書くと以下のようになる。
$data | |
3項目しか記載していないが、全項目書くとなると確かに煩雑。
そこで、7行目で出力プロパティをテーブルで指定して、11行目でハッシュテーブルをロジカルに作り出している。
肝は[ScriptBlock]クラスの「Create」メソッド。
変数値を解決しつつブロックを作り出している。
この例では日本語から英語に変えているが、英語の項目名を纏めて日本語にするなんて時には使えそうなTipsではなかろうか。
0 件のコメント:
コメントを投稿