속성 값에 따라 개체를 정렬합니다.
구문
Sort-Object [[-Property] <Object[]>] [-CaseSensitive] [-Culture <string>] [-Descending] [-InputObject <psobject>] [-Unique] [<CommonParameters>]
설명
Sort-Object cmdlet은 개체의 속성 값을 기준으로 개체를 오름차순 또는 내림차순으로 정렬합니다.
하나의 속성 또는 여러 속성(복수 키 정렬)을 지정할 수도 있고 대/소문자를 구분하거나 구분하지 않는 정렬을 선택할 수도 있습니다. 또한 특정 속성에 고유 값이 있는 개체만 표시하도록 Sort-Object에 지시할 수 있습니다.
매개 변수
-CaseSensitive
정렬은 대/소문자를 구분해야 함을 나타냅니다. 기본적으로 정렬은 대/소문자를 구분하지 않습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Culture <string>
정렬할 때 사용할 cultural 구성을 지정합니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Descending
개체를 내림차순으로 정렬합니다. 기본값은 오름차순입니다.
Descending 매개 변수는 모든 속성에 적용됩니다. 일부 속성을 기준으로
오름차순으로 정렬하고 다른 속성을 기준으로 내림차순으로 정렬하려면 해시 테이블을 사용하여 속성 값을 지정해야 합니다. 자세한 내용은 예를 참조하십시오.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-InputObject <psobject>
정렬할 개체를 지정합니다.
InputObject 매개 변수를 사용하여 항목 컬렉션을 전송하는 경우 Sort-Object는 해당 컬렉션을 나타내는 개체 하나를 받게 됩니다. 개체 하나는 정렬할 수 없으므로 Sort-Object는 전체 컬렉션을 변경하지 않고 반환합니다.
개체를 정렬하려면 Sort-Object로 파이프하십시오.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
true (ByValue) |
와일드카드 문자 적용 여부 |
false |
-Property <Object[]>
정렬할 때 사용할 속성을 지정합니다. 개체는 이러한 속성 값을 기준으로 정렬됩니다. 속성 이름을 입력하십시오. 와일드카드를 사용할 수 있습니다.
여러 개체를 지정하면 개체는 먼저 첫 번째 속성에 따라 정렬됩니다. 첫 번째 속성 값이 같은 개체가 여러 개 있는 경우 이러한 개체는 두 번째 속성에 따라 정렬됩니다. 지정된 속성이나 개체 그룹이 더 이상 없을 때까지 이 프로세스가 계속됩니다.
속성을 지정하지 않으면 cmdlet은 개체 유형의 기본 속성을 기준으로 정렬합니다.
Property 매개 변수의 값은 새로 계산된 속성일 수 있습니다. 계산된 속성을 만들려면 해시 테이블을 사용합니다. 유효한 키는 다음과 같습니다.
-- Expression <string> 또는 <script block>
-- Ascending <Boolean>
-- Descending <Boolean>
필수 여부 |
false |
위치 |
1 |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
true |
-Unique
컬렉션에서 중복을 제거하고 고유 멤버만 반환합니다. Get-Unique cmdlet을 사용하는 대신 이 매개 변수를 사용할 수 있습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
<CommonParameters>
이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_Commonparameters.
입력 및 출력
입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.
입력 |
System.Management.Automation.PSObject 정렬할 개체를 Sort-Object로 파이프할 수 있습니다. |
출력 |
System.Management.Automation.PSObject Sort-Object는 정렬된 개체를 반환합니다. |
참고
Sort-Object는 지정한 속성 또는 해당 유형 개체의 기본 정렬 속성을 기준으로 개체를 정렬합니다.
개체에 지정된 속성이 하나도 없으면 cmdlet이 이 개체에 대한 속성 값을 NULL로 해석하고 정렬 순서의 끝에 배치합니다.
개체를 정렬할 때 Sort-Object는 각 속성의 Compare 메서드를 사용합니다. 속성이 IComparable을 구현하지 않으면 cmdlet이 속성 값을 문자열로 변환하고 System.String의 Compare 메서드를 사용합니다.
Sort-Object cmdlet은 개체의 속성 값을 기준으로 개체를 오름차순 또는 내림차순으로 정렬합니다.
값이 열거형인 속성으로 정렬하는 경우 Sort-Object는 열거형 멤버 이름을 정렬하는 것이 아니라 열거형 값을 숫자 순서로 정렬합니다. 예를 들어 상태 기준으로 서비스를 정렬하는 경우 상태가 "Stopped"인 서비스가 상태가 "Running"인 서비스 앞에 나타나는데 그 이유는 상태 값이 ServiceControllerStatus 열거형이고 여기에서 "Stopped"의 값은 1이고 "Running"의 값은 4이기 때문입니다.
예 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 설명 ----------- 이 명령은 컴퓨터에서 작업 집합의 크기를 기준으로 가장 메모리를 많이 사용하는 다섯 개의 프로세스를 표시합니다. 이 명령은 Get-Process cmdlet을 사용하여 프로세스 목록을 가져옵니다. 파이프라인 연산자(|)를 사용하여 결과를 Sort-Object cmdlet으로 보내면 이 cmdlet은 개체를 작업 집합 순서로 정렬합니다. 다른 파이프라인 연산자는 결과를 목록에서 마지막 다섯 개 항목만 표시하는 Select-Object로 보냅니다.
예 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 cmdlet을 사용하여 컴퓨터의 서비스를 가져온 다음 파이프라인 연산자(|)를 사용하여 Sort-Object cmdlet으로 보냅니다. 한 속성을 오름차순으로 정렬하고 다른 속성을 내림차순으로 정렬하기 위해 이 명령은 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 설명 ----------- 이들 명령은 텍스트 파일의 서버 이름을 정렬합니다. 두 번째 명령은 Unique 매개 변수와 함께 Sort-Object cmdlet을 사용하여 중복 없이 정렬된 목록을 반환합니다.
참고 항목