PowerShell
16
どのような問題がありますか?

この記事は最終更新日から3年以上が経過しています。

投稿日

Select-Object コマンドレットを復習

ブログからの転載

経緯

同僚から「Select-Object で使う Expression って知ってる?便利だったよ」と教えてもらいました。なんとなく使っていた Select-Object でしたので復習してみたメモです。

Select-Object とは

オブジェクトのプロパティを取り出したオブジェクトを出力するコマンドレット。

使い方

Get-Process コマンドレットの出力を操作することで、Select-Object 説明する。
ちなみに、Get-Process コマンドレットを引数無しで実行すると次の通りになる。

プロパティの値を選択する

Get-Process の結果から ProcessName , Description , StartTime を取り出す

Get-Process | Select-Object -Property ProcessName, Description, StartTime

プロパティの値を展開する

プロセス名を Chrome に絞り、利用しているモジュールを重複を省いて表示する

Get-Process Chrome | Select-Object -Property ProcessName, Modules -Unique

Modules はオブジェクトになっているので上図のようになるが、それを展開するために -ExpandProperty を利用する

Get-Process Chrome | Select-Object -Property ProcessName -ExpandProperty Modules -Unique

出力件数を指定する

Get-Process の結果から先頭の 5 件を取り出す

Get-Process | Select-Object -Property ProcessName, Description, StartTime -First 5

Get-Process の結果から最後の 5 件を取り出す

Get-Process | Select-Object -Property ProcessName, Description, StartTime -Last 5

加工して出力する

Get-ProcessStartTime を和暦に変換して取り出す


$CultureInfo = New-Object CultureInfo("ja-jp", $true)
$CultureInfo.DateTimeFormat.Calendar = New-Object System.Globalization.JapaneseCalendar
Get-Process | Select-Object -Property ProcessName, Description, @{Name = "wareki"; Expression = {$_.StartTime.ToString("gy年M月d日", $CultureInfo)}}

Get-Process の結果にから Modules オブジェクトに含まれる数順で並べる

Get-Process | Select-Object -Property ProcessName, Description, @{Name="ModulesCount"; Expression={$_.Modules.Count}} | Sort-Object -Property ModulesCount -Descending

参考

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
ログインすると使える機能について
miyamiya
アーティサン株式会社で元気よく PM とエンジニアしてます。 急に興味が出て、国際ユニヴァーサルデザイン協議会のUD検定・中級を取りました。

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
新規登録
すでにアカウントを持っている方はログイン
16
どのような問題がありますか?
新規登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
新規登録ログイン
ストックするカテゴリー