Sort-Object コマンドレットの使用

返されたデータの並べ替え

スクリプトを作成している場合、任意に、また簡単にデータを並べ替えることができることを夢想しているのではないでしょうか。夢は叶わないと言ったのはだれですか。Windows PowerShell では、驚くほど簡単にデータを並べ替えることができ、任意に並べ替えることができます。

たとえば、既定で Get-EventLog コマンドレットは、イベント ログにイベントが記述された時間で並べ替えられたデータを返します。それでは、EventID でデータを並べ替える場合はどうでしょうか。その場合はどうすればよいのでしょうか。

実際のところ、どうすればよいでしょうか。EventID で並べ替えるには、データを取得し、Sort-Object コマンドレットにパイプ処理し、並べ替えるプロパティを Sort-Object に指示します。

Get-EventLog system -newest 5 | Sort-Object eventid

このコマンドを実行すると、次のようなデータが返されます。

Index Time          Type Source                EventID Message
----- ----          ---- ------                ------- -------
 6194 May 16 12:41  Info W32Time                    35 タイム プロバイダが使用...
 6193 May 16 12:41  Erro Dhcp                     1000 ネットワーク アドレスが...
 6197 May 16 14:47  Warn Dhcp                     1003 ネットワーク アドレスが...
 6196 May 16 14:13  Warn Dhcp                     1003 ネットワーク アドレスが...
 6195 May 16 12:42  Warn Dhcp                     1007 ネットワーク アドレスが...

どうです、すばらしいでしょう。最も大きな EventID が最初に表示されるように、降順でイベントを並べ替えますか。問題ありません。-descending パラメータを付加するだけです。

Get-EventLog system -newest 5 | Sort-Object eventid -descending

変化したところに注目してください。

Index Time          Type Source                EventID Message
----- ----          ---- ------                ------- -------
 6195 May 16 12:42  Warn Dhcp                     1007 ネットワーク アドレスが...
 6197 May 16 14:47  Warn Dhcp                     1003 ネットワーク アドレスが...
 6196 May 16 14:13  Warn Dhcp                     1003 ネットワーク アドレスが...
 6193 May 16 12:41  Erro Dhcp                     1000 ネットワーク アドレスが...
 6194 May 16 12:41  Info W32Time                    35 タイム プロバイダが使用...

また、Windows PowerShell を使用すると、複数のプロパティで並べ替えることができます。プロパティを区切るにはコンマを使用します。たとえば、フォルダ C:\Scripts にあるすべてのファイル一覧を取得するとします。まず拡張子でデータを並べ替えてから、ファイル サイズで並べ替えます。言い換えると、すべての .txt ファイルをグループ化してから、その小さなグループをファイル サイズで並べ替えます。次に、これを実行するコマンドを示します (Get-ChildItem コマンドレットを使用します)。

Get-ChildItem c:\scripts | Sort-Object extension,length

返される出力の種類を紹介します。すべての .vbs ファイルが一緒に表示されるだけでなく、ファイル サイズでも並べ替えられており、最も小さな .vbs ファイルが最初に表示され、最も大きな .vbs ファイルが末尾に表示されます。

-a---          5/5/2006   9:09 PM      53358 tee.txt
-a---         5/15/2006   8:57 AM        377 new_excel.vbs
-a---         3/15/2006  10:23 AM        399 imapi.vbs
-a---          3/3/2006   2:46 PM        537 methods.vbs
-a---          3/3/2006   2:55 PM        698 read-write.vbs
-a---         3/11/2006  10:10 PM        978 imapi2.vbs
-a---         3/17/2006   8:21 AM       1105 winsat.vbs
-a---          5/5/2006   2:55 PM      19225 test.vbs
-a---          4/4/2006   8:30 AM    2616487 HoneyPie.wma
Sort-Object のエイリアス
  • sort

関連リンク