Sort-Object
プロパティ値でオブジェクトを並べ替えます。
構文
Default (既定)
Sort-Object
[[-Property] <Object[]>]
[-Descending]
[-Unique]
[-InputObject <psobject>]
[-Culture <string>]
[-CaseSensitive]
[<CommonParameters>]
説明
Sort-Object コマンドレットは、オブジェクトのプロパティ値に基づいてオブジェクトを昇順または降順で並べ替えます。 並べ替えプロパティがコマンドに含まれていない場合、PowerShell は既定の並べ替えプロパティを使用します。
オブジェクトは、1 つのプロパティまたは複数のプロパティで並べ替えることができます。 複数のプロパティは、ハッシュ テーブルを使用して昇順、降順、または並べ替え順序の組み合わせで並べ替えます。 プロパティは、大文字と小文字を区別するか、大文字と小文字を区別せずに並べ替えられます。 [一意] パラメーターを使用して、出力から重複を排除します。
例
例 1: 現在のディレクトリを名前で並べ替える
このコマンドは、ディレクトリ内のファイルとサブディレクトリをソートします。
PS> Get-ChildItem -Path C:\Test | Sort-Object
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/13/2019 08:55 26 anotherfile.txt
-a---- 2/13/2019 13:26 20 Bfile.txt
-a---- 2/12/2019 15:40 118014 Command.txt
-a---- 2/1/2019 08:43 183 CreateTestFile.ps1
d----- 2/25/2019 18:25 Files
d----- 2/25/2019 18:24 Logs
-ar--- 2/12/2019 14:31 27 ReadOnlyFile.txt
-a---- 2/12/2019 16:24 23 Zsystemlog.log
Get-ChildItem コマンドレットは、Path パラメーター C:\Test で指定されたディレクトリからファイルとサブディレクトリを取得します。 オブジェクトは、パイプラインから Sort-Object コマンドレットに送信されます。
Sort-Object プロパティを指定しないため、出力はデフォルトのソート・プロパティである Name でソートされます。
例 2: 現在のディレクトリをファイル長で並べ替える
このコマンドは、現在のディレクトリ内のファイルを長さ順に昇順で表示します。
PS> Get-ChildItem -Path C:\Test -File | Sort-Object -Property Length
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/13/2019 13:26 20 Bfile.txt
-a---- 2/12/2019 16:24 23 Zsystemlog.log
-a---- 2/13/2019 08:55 26 anotherfile.txt
-ar--- 2/12/2019 14:31 27 ReadOnlyFile.txt
-a---- 2/1/2019 08:43 183 CreateTestFile.ps1
-a---- 2/12/2019 15:40 118014 Command.txt
Get-ChildItem コマンドレットは、Path パラメーターで指定されたディレクトリからファイルを取得します。
File パラメーターは、Get-ChildItem がファイル オブジェクトのみを取得することを指定します。 オブジェクトは、パイプラインから Sort-Object コマンドレットに送信されます。
Sort-Object では、Length パラメーターを使用して、ファイルを昇順で長さで並べ替えます。
例 3: メモリ使用量でプロセスを並べ替える
次の使用例は、ワーキング セット (WS) サイズに基づいてメモリ使用量が最も多いプロセスを表示します。
PS> Get-Process | Sort-Object -Property WS | Select-Object -Last 5
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
136 193.92 217.11 889.16 87492 8 OUTLOOK
112 347.73 297.02 95.19 106908 8 Teams
206 266.54 323.71 37.17 60620 8 MicrosoftEdgeCP
35 552.19 549.94 131.66 6552 8 Code
0 1.43 595.12 0.00 2780 0 Memory Compression
Get-Process コマンドレットは、コンピューターで実行されているプロセスの一覧を取得します。 プロセス オブジェクトは、パイプラインから Sort-Object コマンドレットに送信されます。
Sort-Object では、Property パラメーターを使用して、WS でオブジェクト並べ替えます。 オブジェクトは、パイプラインから Select-Object コマンドレットに送信されます。
Select-Object では、Last パラメーターを使用して、最後の 5 つのオブジェクト (WS の使用率が最も高いオブジェクト) 指定します。
例 4: HistoryInfo オブジェクトを ID で並べ替える
このコマンドは、Id プロパティを使用して、PowerShell セッションの HistoryInfo オブジェクトを並べ替えます。 各 PowerShell セッションには、独自のコマンド履歴があります。
PS> Get-History | Sort-Object -Property Id -Descending
Id CommandLine
-- -----------
10 Get-Command Sort-Object -Syntax
9 $PSVersionTable
8 Get-Command Sort-Object -Syntax
7 Get-Command Sort-Object -ShowCommandInfo
6 Get-ChildItem -Path C:\Test | Sort-Object -Property Length
5 Get-Help Clear-History -online
4 Get-Help Clear-History -full
3 Get-ChildItem | Get-Member
2 Get-Command Sort-Object -Syntax
1 Set-Location C:\Test\
Get-History コマンドレットは、現在の PowerShell セッションから履歴オブジェクトを取得します。 オブジェクトは、パイプラインから Sort-Object コマンドレットに送信されます。
Sort-Object では、Property パラメーターを使用して、IDでオブジェクトを並べ替えます。Descending パラメーターは、コマンド履歴を最新から最も古いものに並べ替えます。
例 5: ハッシュ テーブルを使用してプロパティを昇順および降順で並べ替える
このコマンドでは、 Status と DisplayName の 2 つのプロパティを使用してオブジェクトを並べ替えます。 状態 は降順で並べ替えられます。DisplayName は昇順で並べ替えられます。
ハッシュ テーブルは、Property パラメーターの値を指定するために使用されます。 ハッシュ テーブルでは、式を使用してプロパティ名と並べ替え順序を指定します。 ハッシュ テーブルの詳細については、「about_Hash_Tables (ハッシュ テーブルについて)」をご覧ください。
ハッシュ テーブルで使用される Status プロパティは列挙プロパティです。 詳細については、「ServiceControllerStatus を参照してください。
PS C:\> Get-Service | Sort-Object -Property @{Expression = "Status"; Descending = $True}, @{Expression = "DisplayName"; Descending = $False}
Status Name DisplayName
------ ---- -----------
Running Appinfo Application Information
Running BthAvctpSvc AVCTP service
Running BrokerInfrastru... Background Tasks Infrastructure Ser...
Running BDESVC BitLocker Drive Encryption Service
Running CoreMessagingRe... CoreMessaging
Running VaultSvc Credential Manager
Running DsSvc Data Sharing Service
Running Dhcp DHCP Client
...
Stopped ALG Application Layer Gateway Service
Stopped AppMgmt Application Management
Stopped BITS Background Intelligent Transfer Ser...
Stopped wbengine Block Level Backup Engine Service
Stopped BluetoothUserSe... Bluetooth User Support Service_14fb...
Stopped COMSysApp COM+ System Application
Stopped smstsmgr ConfigMgr Task Sequence Agent
Stopped DeviceInstall Device Install Service
Stopped MSDTC Distributed Transaction Coordinator
Get-Service コマンドレットは、コンピューター上のサービスの一覧を取得します。 サービス オブジェクトは、パイプラインから Sort-Object コマンドレットに送信されます。
Sort-Object では、ハッシュ テーブルと共に Property パラメーターを使用して、プロパティ名と並べ替え順序を指定します。
Property パラメーターは、Status を降順に並べ替え、DisplayName を昇順で、2 つのプロパティで並べ替えられます。
Status は列挙プロパティです。
Stopped の値は 1、Running の値は 4です。
Descending パラメーターは $True に設定され、停止した プロセス 前に 実行中の プロセスが表示されます。 DisplayName 、Descending パラメーターを $False に設定して、表示名をアルファベット順に並べ替えます。
例 6: 期間でテキスト ファイルを並べ替える
このコマンドは、CreationTime と LastWriteTime の間の期間でテキスト ファイルを降順に並べ替えます。
PS> Get-ChildItem -Path C:\Test\*.txt | Sort-Object -Property @{Expression = {$_.CreationTime - $_.LastWriteTime}; Descending = $False} | Format-Table CreationTime, LastWriteTime, FullName
CreationTime LastWriteTime FullName
------------ ------------- --------
11/21/2018 12:39:01 2/26/2019 08:59:36 C:\Test\test2.txt
12/4/2018 08:29:41 2/26/2019 08:57:05 C:\Test\powershell_list.txt
2/20/2019 08:15:59 2/26/2019 12:09:43 C:\Test\CreateTestFile.txt
2/20/2019 08:15:59 2/26/2019 12:07:41 C:\Test\Command.txt
2/20/2019 08:15:59 2/26/2019 08:57:52 C:\Test\ReadOnlyFile.txt
11/29/2018 15:16:50 12/4/2018 16:16:24 C:\Test\LogData.txt
2/25/2019 18:25:11 2/26/2019 12:08:47 C:\Test\Zsystemlog.txt
2/25/2019 18:25:11 2/26/2019 08:55:33 C:\Test\Bfile.txt
2/26/2019 08:46:59 2/26/2019 12:12:19 C:\Test\LogFile3.txt
Get-ChildItem コマンドレットは、Path パラメーターを使用して、ディレクトリ C:\Test とすべての*.txtファイルを指定します。 オブジェクトは、パイプラインから Sort-Object コマンドレットに送信されます。
Sort-Object ハッシュ テーブルと共に Property パラメーターを使用して、 CreationTime と LastWriteTime の間の各ファイルの期間を決定します。
[降順] パラメーターを $False に設定すると、期間が長いものから短いものの順に並べ替えられます。
例 7: テキスト ファイル内の名前を並べ替える
この例では、テキスト ファイルからリストを並べ替える方法を示します。 元のファイルは、並べ替えられていないリストとして表示されます。
Sort-Object は、内容を並べ替え、重複を削除する Unique パラメーターを使用して内容を並べ替えます。
PS> Get-Content -Path C:\Test\ServerNames.txt
localhost
server01
server25
LOCALHOST
Server19
server3
localhost
PS> Get-Content -Path C:\Test\ServerNames.txt | Sort-Object
localhost
LOCALHOST
localhost
server01
Server19
server25
server3
PS> Get-Content -Path C:\Test\ServerNames.txt | Sort-Object -Unique
localhost
server01
Server19
server25
server3
Get-Content コマンドレットは、Path パラメーターを使用してディレクトリとファイル名を指定します。 ファイル ServerNames.txt には、並べ替えられていないコンピューター名の一覧が含まれています。
Get-Content コマンドレットは、Path パラメーターを使用してディレクトリとファイル名を指定します。 ファイル ServerNames.txt には、並べ替えられていないコンピューター名の一覧が含まれています。 オブジェクトは、パイプラインから Sort-Object コマンドレットに送信されます。
Sort-Object は、リストを既定の順序 (昇順) で並べ替えます。
Get-Content コマンドレットは、Path パラメーターを使用してディレクトリとファイル名を指定します。 ファイル ServerNames.txt には、並べ替えられていないコンピューター名の一覧が含まれています。 オブジェクトは、パイプラインから Sort-Object コマンドレットに送信されます。
Sort-Object では、Unique パラメーターを使用して、重複するコンピューター名を削除します。 リストは、既定の昇順で並べ替えられます。
例 8: 文字列を整数として並べ替える
この例では、文字列オブジェクトを含むテキスト ファイルを整数として並べ替える方法を示します。 各コマンドをパイプラインに送信して Get-Member オブジェクトが文字列または整数であることを確認できます。
PS> Get-Content -Path C:\Test\ProductId.txt | Sort-Object
0
1
12345
1500
2
2800
3500
4100
500
6200
77
88
99999
PS> Get-Content -Path C:\Test\ProductId.txt | ForEach-Object -Process {[int]$_} | Sort-Object
0
1
2
77
88
500
1500
2800
3500
4100
6200
12345
99999
Get-Content コマンドレットは、Path パラメーターを使用してディレクトリとファイル名を指定します。 ファイル ProductId.txt には、ソートされていない製品番号のリストが含まれています。 文字列オブジェクトは、パイプラインを経由して Sort-Object コマンドレットに送信されます。
Sort-Object 文字列オブジェクトを昇順で並べ替えます。
Get-Content コマンドレットは、Path パラメーターを使用してディレクトリとファイル名を指定します。 ファイル ProductId.txt には、ソートされていない製品番号のリストが含まれています。 文字列オブジェクトは、パイプラインを経由して ForEach-Object コマンドレットに送信されます。
ForEach-Object スクリプト ブロックを使用して文字列を整数に変換します。 サンプル コードでは、[int] 文字列を整数に変換し、$_ はパイプラインの下にある各文字列を表します。 整数オブジェクトは、パイプラインから Sort-Object コマンドレットに送信されます。
Sort-Object は、整数オブジェクトを数値順に並べ替えます。
パラメーター
-CaseSensitive
並べ替えが大文字と小文字を区別することを示します。 デフォルトでは、ソートでは大文字と小文字は区別されません。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | Case-insensitive |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Culture
並べ替えに使用するカルチャ構成を指定します。
Get-Culture を使用して、システムのカルチャ構成を表示します。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Descending
Sort-Object がオブジェクトを降順に並べ替える方法を示します。 既定値は昇順です。
異なる並べ替え順序で複数のプロパティを並べ替えるには、ハッシュ テーブルを使用します。 たとえば、ハッシュ テーブルを使用すると、1 つのプロパティを昇順で並べ替え、別のプロパティを降順で並べ替えることができます。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | Ascending |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-InputObject
オブジェクトを並べ替えるには、パイプラインを Sort-Objectに送信します。
InputObject パラメーターを使用して項目のコレクションを送信する場合、Sort-Object はコレクションを表す 1 つのオブジェクトを受け取ります。 1 つのオブジェクトを並べ替えることはできないため、 Sort-Object はコレクション全体を変更せずに返します。
パラメーターのプロパティ
| 型: | PSObject |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | True |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Property
オブジェクトの並べ替えに使用 Sort-Object プロパティ名を指定します。 ワイルドカードを使用できます。
オブジェクトは、プロパティ値に基づいて並べ替えられます。 プロパティを指定しない場合、 Sort-Object はオブジェクトタイプのデフォルトのプロパティに基づいてソートします。
複数のプロパティは、昇順、降順、または並べ替え順序の組み合わせで並べ替えることができます。 複数のプロパティを指定すると、オブジェクトは最初のプロパティで並べ替えられます。 複数のオブジェクトが最初のプロパティに同じ値を持つ場合、それらのオブジェクトは 2 番目のプロパティで並べ替えられます。 このプロセスは、指定されたプロパティがなくなったり、オブジェクトのグループが存在しないまで続行されます。
Property パラメーターの値は、計算プロパティにすることができます。 計算プロパティを作成するには、ハッシュ テーブルを使用します。
ハッシュ テーブルの有効なキーは次のとおりです。
- 式 <文字列> または <スクリプト ブロック>
- 昇順 <ブール値>
- 降順 <ブール値>
パラメーターのプロパティ
| 型: | Object[] |
| 規定値: | Default properties |
| ワイルドカードのサポート: | True |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | 0 |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Unique
Sort-Object が重複を排除し、コレクションの一意のメンバーのみを返すように指定します。 並べ替えられた出力には、一意の値の最初のインスタンスが含まれます。
一意の では大文字と小文字が区別されません。 文字ケースによってのみ異なる文字列は同じと見なされます。 たとえば、文字や CHARACTER などです。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | All |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
CommonParameters
このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。
入力
PSObject
ソートするオブジェクトを Sort-Objectにパイプ処理できます。
出力
PSObject
Sort-Object ソートされたオブジェクトを返します。
メモ
Sort-Object コマンドレットは、コマンドで指定されたプロパティまたはオブジェクト型の既定の並べ替えプロパティに基づいてオブジェクトを並べ替えます。 オブジェクトに指定されたプロパティの 1 つがない場合、そのオブジェクトのプロパティ値は Sort-Object によって Null と解釈され、並べ替え順序の最後に配置されます。
Sort-Object では、プロパティごとに Compare メソッドを使用します。 プロパティが IComparable を実装していない場合、コマンドレットはプロパティ値を文字列に変換し、System.String の Compare メソッドを使用します。 詳細については、「PSObject.CompareTo(Object) メソッドのを参照してください。
Statusなどの列挙プロパティで並べ替える場合は、列挙値で並べ替 Sort-Object。
Stopped の値は 1、Running の値は 4です。
停止した は、列挙値のため、実行中の を する前に並べ替えられます。 詳細については、「ServiceControllerStatus を参照してください。