PowerShell Cmdlet - Sort-Object
 記事記号:[mh1901] 初版:2011/Sep/30

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

名前
    Sort-Object
    
概要
    プロパティ値に基づいてオブジェクトを並べ替えます。
    
構文
    Sort-Object [[-Property] <Object[]>] [-CaseSensitive] [-Culture <string>] [-
    Descending] [-InputObject <psobject>] [-Unique] [<CommonParameters>]
    
説明
    Sort-Object コマンドレットは、オブジェクトのプロパティ値に基づいてオブジェク
    トを昇順または降順に並べ替えます。
    
    単一のプロパティまたは複数のプロパティ (複数のキーで並べ替える場合) を指定し
    たり、並べ替えに大文字と小文字を区別するかどうかを選択したりできます。また、
    特定のプロパティについて一意の値を持つオブジェクトのみを表示するように Sort-
    Object に指示することもできます。

パラメーター
    -CaseSensitive [<SwitchParameter>]
        並べ替えが行われる際、大文字と小文字が区別されることを示します。既定では、
        大文字と小文字は区別されません。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Culture <string>
        並べ替えるときに使用するカルチャ構成を指定します。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Descending [<SwitchParameter>]
        オブジェクトを降順で並べ替えます。既定値は昇順です。
        
        Descending パラメーターは、すべてのプロパティに適用されます。一部のプロ
        パティを昇順で並べ替え、その他は降順で並べ替えるには、ハッシュ テーブル
        を使用してプロパティ値を指定する必要があります。詳細については、例を参
        照してください。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -InputObject <psobject>
        並べ替えるオブジェクトを指定します。
        
        InputObject パラメーターを使用して項目のコレクションを送ると、Sort-Objec
        t はそのコレクションを表す 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 [<SwitchParameter>]
        重複を取り除き、コレクションの一意のメンバーのみを返します。Get-Unique 
        コマンドレットを使用する代わりに、このパラメーターを使用できます。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    <CommonParameters>
        このコマンドレットは、次の共通パラメーターをサポートします: Verbose、
        Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、
        OutBuffer、および OutVariable。詳細については、
        「get-help 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 の値は ServiceCon
        trollerStatus 列挙型になり、ここでは "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={$_.LastWrite
    Time - $_.CreationTime}; Ascending=$false} | Format-Table LastWriteTime, Cre
    ationTime 
    
    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 パラメーターと共に使用
    して、重複のない並べ替え済みの一覧を返します。
    
関連するリンク
    Online version: http://go.microsoft.com/fwlink/?LinkID=113403
    Group-Object 
    	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Cmdlet、Sort-Object
ご利用数: 1915725
感想・要望・問い合わせは こちら