속성 값에 따라 개체를 정렬합니다.

구문

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을 사용하여 중복 없이 정렬된 목록을 반환합니다.






참고 항목




목차