プロパティ値に基づいてオブジェクトを並べ替えます。
構文
Sort-Object [[-Property] <Object[]>] [-CaseSensitive] [-Culture <string>] [-Descending] [-InputObject <psobject>] [-Unique] [<CommonParameters>]
説明
Sort-Object コマンドレットは、オブジェクトのプロパティ値に基づいてオブジェクトを昇順または降順に並べ替えます。
単一のプロパティまたは複数のプロパティ (複数のキーで並べ替える場合) を指定したり、並べ替えに大文字と小文字を区別するかどうかを選択したりできます。また、特定のプロパティについて一意の値を持つオブジェクトのみを表示するように Sort-Object に指示することもできます。
パラメーター
-CaseSensitive
並べ替えが行われる際、大文字と小文字が区別されることを示します。既定では、大文字と小文字は区別されません。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Culture <string>
並べ替えるときに使用するカルチャ構成を指定します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Descending
オブジェクトを降順で並べ替えます。既定値は昇順です。
Descending パラメーターは、すべてのプロパティに適用されます。一部のプロパティを
昇順で並べ替え、その他は降順で並べ替えるには、ハッシュ テーブルを使用してプロパティ値を指定する必要があります。詳細については、例を参照してください。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-InputObject <psobject>
並べ替えるオブジェクトを指定します。
InputObject パラメーターを使用して項目のコレクションを送ると、Sort-Object はそのコレクションを表す 1 つのオブジェクトを受け取ります。1 つのオブジェクトを並べ替えることはできないので、Sort-Object は変更されていないコレクション全体を返します。
オブジェクトを並べ替えるには、オブジェクトを Sort-Object にパイプします。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
true (ByValue) |
ワイルドカード文字を許可する |
false |
-Property <Object[]>
並べ替えるときに使用するプロパティを指定します。オブジェクトは、これらのプロパティの値に基づいて並べ替えられます。プロパティ名を入力します。ワイルドカードを使用できます。
複数のプロパティを指定すると、オブジェクトはまず最初のプロパティに基づいて並べ替えられます。複数のオブジェクトが最初のプロパティで同一の値を持っている場合は、2 番目のプロパティに基づいてオブジェクトが並べ替えられます。この処理は、指定されているプロパティがなくなるまで、または該当するオブジェクトのグループがなくなるまで続きます。
プロパティを指定しないと、コマンドレットはオブジェクト タイプの既定のプロパティに基づいた並べ替えを行います。
Property パラメーターの値には、新しい集計プロパティを指定できます。集計プロパティを作成するには、ハッシュ テーブルを使用します。有効なキーは次のとおりです。
-- Expression <string> または <script block>
-- Ascending <Boolean>
-- Descending <Boolean>
必須 |
false |
位置 |
1 |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
true |
-Unique
重複を取り除き、コレクションの一意のメンバーのみを返します。Get-Unique コマンドレットを使用する代わりに、このパラメーターを使用できます。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
<CommonParameters>
このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。Ô”¼š¤Ë¤Ä¤¤¤Æ¤Ï¡¢次を参照してください: about_Commonparameters.
入力と出力
入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。
入力 |
System.Management.Automation.PSObject パイプを使用して、並べ替えるオブジェクトを Sort-Object に渡すことができます。 |
出力 |
System.Management.Automation.PSObject Sort-Object は、並べ替えたオブジェクトを返します。 |
注
Sort-Object は、指定したプロパティまたはそのタイプのオブジェクトの既定の並べ替えプロパティに基づいてオブジェクトを並べ替えます。
指定されたプロパティのいずれかがオブジェクトにない場合、そのオブジェクトのプロパティ値は NULL であると解釈され、並べ替え順の最後に置かれます。
オブジェクトを並べ替える際、Sort-Object はプロパティごとに Compare メソッドを使用します。IComparable が実装されていないプロパティについては、そのプロパティ値を文字列に変換して System.String の Compare メソッドを適用します。
Sort-Object コマンドレットは、オブジェクトのプロパティ値に基づいてオブジェクトを昇順または降順に並べ替えます。
値が列挙型のプロパティに基づいて並べ替えを行うと、Sort-Object は列挙値を番号順に並べ替えますが、列挙メンバー名の並べ替えは行いません。たとえば、ステータスを基準にしてサービスを並べ替えた場合、Status の値は ServiceControllerStatus 列挙型になり、ここでは "Stopped" の値が 1 で "Running" の値が 4 であるため、"Running" ステータスのサービスの前に "Stopped" ステータスのサービスが表示されます。
例 1
C:\PS>get-childitem | sort-object Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 9/13/2005 4:24 PM 0 0 -a--- 9/6/2005 4:19 PM 12 a.csv -a--- 9/21/2005 3:49 PM 529 a.Ps -a--- 8/22/2005 4:14 PM 22 a.pl -a--- 9/27/2005 10:33 AM 24 a.txt -a--- 9/15/2005 10:31 AM 398 a.vbs -a--- 7/21/2005 12:39 PM 37066 a.xml -a--- 8/28/2005 11:30 PM 5412 a.xslt -a--- 10/25/2005 1:59 PM 125 AdamTravel.txt -a--- 7/21/2005 9:49 AM 59 add2Num.Ps -a--- 8/29/2005 5:42 PM 7111 add-content.xml -a--- 9/21/2005 12:46 PM 8771 aliens.Ps -a--- 8/10/2005 2:10 PM 798 array.xml -a--- 8/4/2004 5:00 AM 110 AUTORUN.INF -a--- 9/6/2005 4:20 PM 245 b.csv ... 説明 ----------- このコマンドは、現在のディレクトリにあるサブディレクトリとファイルを並べ替えます。プロパティが指定されていないため、ファイルとディレクトリは既定の並べ替えプロパティである Name を基準にして昇順のアルファベット順で並べ替えられます。
例 2
C:\PS>get-childitem | sort-object -property length Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 12/3/2006 5:35 PM 2 pref.txt -a--- 9/6/2006 3:33 PM 15 count.txt -a--- 7/26/2006 10:01 AM 30 filenoext -a--- 8/18/2006 9:02 AM 52 temp.ps1 -a--- 8/18/2006 9:02 AM 52 temp.msh -a--- 9/6/2006 3:33 PM 56 fivewords.txt -a--- 7/26/2006 9:28 AM 80 date.csv -a--- 7/29/2006 7:15 PM 84 test2.txt -a--- 7/29/2006 7:15 PM 84 test.ps1 説明 ----------- このコマンドは、現在のディレクトリにあるファイルをその長さに従って昇順で表示します。
例 3
C:\PS>get-process | sort-object -property WS | select-object -last 5 Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 1105 25 44236 18932 197 93.81 2032 iexplore 2526 66 37668 36836 221 393.27 868 svchost 974 19 22844 45928 371 88.39 3952 WINWORD 1371 22 42192 61872 323 75.75 1584 INFOPATH 2145 58 93088 70680 619 396.69 3908 OUTLOOK 説明 ----------- このコマンドは、プロセスのワーキング セットのサイズに基づいて、コンピューター上のメモリ使用量が最も多い 5 つのプロセスを表示します。 このコマンドは、Get-Process コマンドレットを使用してプロセスの一覧を取得します。パイプライン演算子 (|) を使用して、結果を Sort-Object コマンドレットに送ります。このコマンドレットは、オブジェクトをワーキング セットの順序に並べ替えます。 もう 1 つのパイプライン演算子によって結果が Select-Object に送られ、一覧の最後の 5 つの項目のみが表示されます。
例 4
C:\PS>get-history | sort-object -descending Id CommandLine -- ----------- 51 get-history | sort -descending 50 get-history | sort -descending 49 get-history | sort -descending 48 get-history | sort -descending 47 get-history | sort -descending 46 get-history | sort -descending 45 get-history | sort -descending 44 cd $pshome 43 get-childitem | sort-object 42 gci *.txt 説明 ----------- このコマンドは、Id プロパティを既定のキーとして HistoryInfo オブジェクトを並べ替えます。
例 5
C:\PS>C:\PS> get-service | sort-object -property ` @{Expression="Status";Descending=$true}, ` @{Expression="DisplayName";Descending=$false} Status Name DisplayName ------ ---- ----------- Running ALG Application Layer Gateway Service Running Ati HotKey Poller Ati HotKey Poller Running wuauserv Automatic Updates Running BITS Background Intelligent Transfer Ser... Running Client for NFS Client for NFS ... Stopped clr_optimizatio... .NET Runtime Optimization Service v... Stopped Alerter Alerter Stopped AppMgmt Application Management Stopped aspnet_state ASP.NET State Service Stopped ATI Smart ATI Smart Stopped ClipSrv ClipBook 説明 ----------- このコマンドは、Status の降順と DisplayName の昇順でコンピューター上のサービスを表示します。 このコマンドは、Get-Service コマンドレットを使用してコンピューター上のサービスを取得します。このコマンドはパイプライン演算子 (|) を使用して、サービスを Sort-Object コマンドレットに送信します。 あるプロパティを昇順で、別のプロパティを降順で並べ替えるために、このコマンドは Property パラメーターの値にハッシュ テーブルを使用します。ハッシュ テーブルでは Expression キーを使用してプロパティ名が指定され、Ascending キーまたは Descending キーで並べ替えの順序が指定されます。 結果表示では Status 値が降順で並べ替えられ、Status 値が "Running" のプロパティは Status 値が "Stopped" のプロパティの前に表示されます。昇順で並べ替えると、"Stopped" は "Running" の前に表示されます。これは、Status が列挙型のプロパティであり、"Stopped" (1) の値が "Running" (4) の値より小さいためです。
例 6
C:\PS>get-childitem *.txt | sort-object -property @{Expression={$_.LastWriteTime - $_.CreationTime}; Ascending=$false} | Format-Table LastWriteTime, CreationTime LastWriteTime CreationTime ------------- ------------ 2/21/2006 10:22:20 AM 10/3/2005 4:19:40 PM 2/27/2006 8:14:24 AM 2/23/2006 10:41:08 PM 2/24/2006 1:26:19 PM 2/23/2006 11:23:36 PM 1/5/2006 12:01:35 PM 1/5/2006 11:35:30 AM 2/24/2006 9:25:40 AM 2/24/2006 9:22:24 AM 2/24/2006 9:40:01 AM 2/24/2006 9:39:41 AM 2/21/2006 10:21:30 AM 2/21/2006 10:21:30 AM 説明 ----------- このコマンドは、CreationTime から LastWriteTime までの時間に基づいてテキスト ファイルを降順で並べ替えます。
例 7
C:\PS>get-content servers.txt localhost test01 server01 server02 localhost server01 C:\PS> get-content servers.txt | sort-object -unique localhost server01 server02 test01 説明 ----------- これらのコマンドは、テキスト ファイル内にあるサーバーの名前を並べ替えます。2 番目のコマンドは、Sort-Object コマンドレットを Unique パラメーターと共に使用して、重複のない並べ替え済みの一覧を返します。
関連項目