Select-Objectで取得するオブジェクトの拡張1. selectでdatetimeオブジェクトをプロパティとして選択するPS tmp> dir *.txt | select Name, LastWriteTime Name LastWriteTime ---- ------------- 1.txt 2018/05/15 3:40:31 2.txt 2018/05/15 3:40:24 2. datetimeオブジェクトを無名ハッシュテーブルに変換して新しいプロパティとして選択するPS tmp> dir *.txt | select Name, LastWriteTime, @{Name = "Youbi"; Expression = {$_.LastWriteTime.DayOfWeek}} Name LastWriteTime Youbi ---- ------------- ----- 1.txt 2018/05/15 3:40:31 Tuesday 2.txt 2018/05/15 3:40:24 Tuesday @{}で無名ハッシュテーブルを作り、その中でNameとExpressionを定義し、$_でLastWriteTime(datetimeオブジェクト)を参照する 3. 無名ハッシュテーブルは記述を短縮できるdir *.txt | select Name, LastWriteTime, @{N = "Youbi"; E = {$_.LastWriteTime.DayOfWeek}} dir *.txt | select Name, LastWriteTime, @{L = "Youbi"; E = {$_.LastWriteTime.DayOfWeek}}
4. プロパティは事前に変数に設定しておける$youbi = @{N = "Youbi"; E = {$_.LastWriteTime.DayOfWeek}} dir *.txt | select Name, LastWriteTime, $youbi 上の場合、$youbiの型はSystem.Collections.Hashtable 5. 無名ハッシュテーブルを使わず、Add-MemberでFileInfoを拡張することもできるPS> $youbi = { $this.LastWriteTime.DayOfWeek } PS> dir *.txt | % { $_ | Add-Member -MemberType ScriptProperty -Name "youbi" -Value $youbi -PassThru } | select Name, LastWriteTime, youbi 上の場合、$youbiをスクリプトブロックとしてあらかじめ変数にしている 参考 |
|