Sort-Object
속성 값에 따라 개체를 정렬합니다.
Syntax
Sort-Object
[[-Property] <Object[]>]
[-Descending]
[-Unique]
[-InputObject <psobject>]
[-Culture <string>]
[-CaseSensitive]
[<CommonParameters>]
Description
cmdlet은 Sort-Object
개체 속성 값에 따라 개체를 오름차순 또는 내림차순으로 정렬합니다. 정렬 속성이 명령에 포함되지 않은 경우 PowerShell은 기본 정렬 속성을 사용합니다.
단일 속성 또는 여러 속성을 기준으로 개체를 정렬할 수 있습니다. 여러 속성은 해시 테이블을 사용하여 오름차순, 내림차순 또는 정렬 순서의 조합으로 정렬합니다. 속성은 대/소문자를 구분하거나 대/소문자를 구분하지 않는 것으로 정렬됩니다. Unique 매개 변수를 사용하여 출력에서 중복 항목을 제거합니다.
예제
예제 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
cmdlet은 Get-ChildItem
Path 매개 변수 C:\Test로 지정된 디렉터리에서 파일 및 하위 디렉터리를 가져옵니다. 개체는 파이프라인 아래로 cmdlet으로 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
cmdlet은 Get-ChildItem
Path 매개 변수로 지정된 디렉터리에서 파일을 가져옵니다.
File 매개 변수는 파일 개체만 가져오게 Get-ChildItem
지정합니다. 개체는 파이프라인 아래로 cmdlet으로 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
cmdlet은 Get-Process
컴퓨터에서 실행되는 프로세스 목록을 가져옵니다. 프로세스 개체는 파이프라인 아래로 cmdlet으로 Sort-Object
전송됩니다. Sort-Object
에서는 Property 매개 변수를 사용하여 WS별로 개체를 정렬합니다. 개체는 파이프라인 아래로 cmdlet으로 Select-Object
전송됩니다.
Select-Object
는 Last 매개 변수를 사용하여 WS 사용량이 가장 높은 개체인 마지막 5개의 개체를 지정합니다.
예제 4: Id별로 HistoryInfo 개체 정렬
이 명령은 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\
cmdlet은 Get-History
현재 PowerShell 세션에서 기록 개체를 가져옵니다. 개체는 파이프라인 아래로 cmdlet으로 Sort-Object
전송됩니다. Sort-Object
에서는 Property 매개 변수를 사용하여 개체를 ID로 정렬합니다. 내림차순 매개 변수는 명령 기록을 최신에서 가장 오래된 것으로 정렬합니다.
예제 5: 해시 테이블을 사용하여 속성을 오름차순 및 내림차순으로 정렬
이 명령은 두 가지 속성을 사용하여 상태 및 DisplayName 개체를 정렬합니다. 상태는 내림차순으로 정렬되고 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
cmdlet은 Get-Service
컴퓨터의 서비스 목록을 가져옵니다. 서비스 개체는 파이프라인 아래로 cmdlet으로 Sort-Object
전송됩니다. Sort-Object
에서는 속성 매개 변수를 해시 테이블과 함께 사용하여 속성 이름과 정렬 순서를 지정합니다. Property 매개 변수는 내림차순 상태와 DisplayName의 두 속성을 오름차순으로 정렬합니다.
상태는 열거된 속성입니다. 중지됨 의 값은 1 이고 실행 값은 4입니다. 내림차순 매개 변수는 중지된 프로세스 전에 실행 중인 프로세스가 표시되도록 로 설정 $True
됩니다. DisplayName 은 내림차순 으로 표시 이름을 정렬하도록 $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
cmdlet은 Get-ChildItem
Path 매개 변수를 사용하여 디렉터리 C:\Test 및 모든 파일을 지정합니다 *.txt
. 개체는 파이프라인 아래로 cmdlet으로 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
cmdlet은 Get-Content
Path 매개 변수를 사용하여 디렉터리와 파일 이름을 지정합니다. 파일ServerNames.txt 정렬되지 않은 컴퓨터 이름 목록이 포함되어 있습니다.
cmdlet은 Get-Content
Path 매개 변수를 사용하여 디렉터리와 파일 이름을 지정합니다. 파일ServerNames.txt 정렬되지 않은 컴퓨터 이름 목록이 포함되어 있습니다. 개체는 파이프라인 아래로 cmdlet으로 Sort-Object
전송됩니다. Sort-Object
는 목록을 기본 순서로 오름차순으로 정렬합니다.
cmdlet은 Get-Content
Path 매개 변수를 사용하여 디렉터리와 파일 이름을 지정합니다. 파일ServerNames.txt 정렬되지 않은 컴퓨터 이름 목록이 포함되어 있습니다. 개체는 파이프라인 아래로 cmdlet으로 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
cmdlet은 Get-Content
Path 매개 변수를 사용하여 디렉터리와 파일 이름을 지정합니다. 파일ProductId.txt 정렬되지 않은 제품 번호 목록이 포함되어 있습니다. 문자열 개체는 파이프라인 아래로 cmdlet으로 Sort-Object
전송됩니다. Sort-Object
는 문자열 개체를 오름차순으로 정렬합니다.
cmdlet은 Get-Content
Path 매개 변수를 사용하여 디렉터리와 파일 이름을 지정합니다. 파일ProductId.txt 정렬되지 않은 제품 번호 목록이 포함되어 있습니다. 문자열 개체는 파이프라인 아래로 cmdlet으로 ForEach-Object
전송됩니다. ForEach-Object
는 스크립트 블록을 사용하여 문자열을 정수로 변환합니다. 샘플 코드 [int]
에서 은 문자열을 정수로 변환하고 $_
파이프라인에서 나올 때 각 문자열을 나타냅니다. 정수 개체는 파이프라인 아래로 cmdlet으로 Sort-Object
전송됩니다. Sort-Object
는 정수 개체를 숫자 순서로 정렬합니다.
매개 변수
-CaseSensitive
정렬이 대/소문자를 구분한다는 것을 나타냅니다. 기본적으로 정렬은 대/소문자를 구분하지 않습니다.
Type: | SwitchParameter |
Position: | Named |
Default value: | Case-insensitive |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Culture
정렬에 사용할 문화권 구성을 지정합니다. 를 사용하여 Get-Culture
시스템의 문화권 구성을 표시합니다.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Descending
개체를 내림차순으로 정렬한다는 Sort-Object
것을 나타냅니다. 기본값은 오름차순입니다.
정렬 순서가 다른 여러 속성을 정렬하려면 해시 테이블을 사용합니다. 예를 들어 해시 테이블을 사용하면 한 속성을 오름차순으로 정렬하고 다른 속성을 내림차순으로 정렬할 수 있습니다.
Type: | SwitchParameter |
Position: | Named |
Default value: | Ascending |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
개체를 정렬하려면 파이프라인 Sort-Object
아래로 를 보냅니다. InputObject 매개 변수를 사용하여 항목 Sort-Object
컬렉션을 제출하는 경우 는 컬렉션을 나타내는 하나의 개체를 받습니다. 하나의 개체를 Sort-Object
정렬할 수 없으므로 는 전체 컬렉션을 변경하지 않고 반환합니다.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Property
개체를 정렬하는 Sort-Object
데 사용하는 속성 이름을 지정합니다. 와일드카드가 지원됩니다.
개체는 속성 값에 따라 정렬됩니다. 속성을 Sort-Object
지정하지 않으면 개체 형식의 기본 속성을 기준으로 정렬합니다.
여러 속성을 오름차순, 내림차순 또는 정렬 순서 조합으로 정렬할 수 있습니다. 여러 속성을 지정하면 개체가 첫 번째 속성을 기준으로 정렬됩니다. 여러 개체가 첫 번째 속성에 대해 동일한 값을 갖는 경우 해당 개체는 두 번째 속성을 기준으로 정렬됩니다. 지정된 속성이나 개체 그룹이 더 이상 없을 때까지 이 프로세스가 계속됩니다.
Property 매개 변수의 값은 계산된 속성일 수 있습니다. 계산된 속성을 만들려면 해시 테이블을 사용하세요.
해시 테이블에 대한 유효한 키는 다음과 같습니다.
- 식 <문자열> 또는 <스크립트 블록>
- <오름차순 부울>
- <내림차순 부울>
Type: | Object[] |
Position: | 0 |
Default value: | Default properties |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Unique
중복을 제거하고 컬렉션의 고유 멤버만 반환한다는 Sort-Object
것을 나타냅니다. 고유 값의 첫 번째 instance 정렬된 출력에 포함됩니다.
Unique 는 대/소문자를 구분하지 않습니다. 문자 대/소문자만 다른 문자열은 동일한 것으로 간주됩니다. 예를 들어 character 및 CHARACTER입니다.
Type: | SwitchParameter |
Position: | Named |
Default value: | All |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
입력
정렬 Sort-Object
할 개체를 로 파이프할 수 있습니다.
출력
Sort-Object
는 정렬된 개체를 반환합니다.
참고
cmdlet은 Sort-Object
명령에 지정된 속성 또는 개체 형식의 기본 정렬 속성에 따라 개체를 정렬합니다. 개체에 지정된 속성 중 하나가 없으면 해당 개체의 속성 값이 Null로 해석되고 Sort-Object
정렬 순서의 끝에 배치됩니다.
Sort-Object
는 각 속성에 대해 Compare 메서드를 사용합니다. 속성이 IComparable을 구현하지 않으면 cmdlet은 속성 값을 문자열로 변환하고 System.String에 대해 Compare 메서드를 사용합니다. 자세한 내용은 PSObject.CompareTo(Object) 메서드를 참조하세요.
StatusSort-Object
와 같은 열거형 속성을 정렬하는 경우 열거형 값을 기준으로 정렬합니다. 중지됨 의 값은 1 이고 실행 중 값은 4입니다. 중지됨 은 열거된 값으로 인해 실행 전에 정렬됩니다. 자세한 내용은 ServiceControllerStatus를 참조하세요.