プロパティ値に基づいてオブジェクトを並べ替えます。

構文

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 パラメーターと共に使用して、重複のない並べ替え済みの一覧を返します。






関連項目




目次