Sort-Object
속성 값을 기준으로 개체를 정렬합니다.
구문
Sort-Object
[-Stable]
[-Descending]
[-Unique]
[-InputObject <PSObject>]
[[-Property] <Object[]>]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Sort-Object
[-Descending]
[-Unique]
-Top <Int32>
[-InputObject <PSObject>]
[[-Property] <Object[]>]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Sort-Object
[-Descending]
[-Unique]
-Bottom <Int32>
[-InputObject <PSObject>]
[[-Property] <Object[]>]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Description
Sort-Object
cmdlet은 개체 속성 값에 따라 개체를 오름차순 또는 내림차순으로 정렬합니다. 정렬 속성이 명령에 포함되지 않은 경우 PowerShell은 첫 번째 입력 개체의 기본 정렬 속성을 사용합니다. 입력 개체의 형식에 기본 정렬 속성이 없는 경우 PowerShell은 개체 자체를 비교하려고 시도합니다. 자세한 내용은 참고 섹션을 참조하세요.
단일 속성 또는 여러 속성을 기준으로 개체를 정렬할 수 있습니다. 여러 속성은 해시 테이블을 사용하여 오름차순, 내림차순 또는 정렬 순서의 조합으로 정렬합니다. 속성은 대/소문자를 구분하거나 대/소문자를 구분하지 않는 것으로 정렬됩니다. Unique 매개 변수를 사용하여 출력에서 중복 항목을 제거합니다.
예제
예제 1: 이름으로 현재 디렉터리 정렬
다음은 디렉터리의 파일 및 하위 디렉터리를 정렬하는 예제입니다.
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
cmdlet은 C:\Test
매개 변수로 지정된 디렉터리에서 파일 및 하위 디렉터리를 가져옵니다. 개체는 파이프라인을 Sort-Object
cmdlet으로 보냅니다.
Sort-Object
속성을 지정하지 않으므로 출력이 기본 정렬 속성인 Name따라 정렬됩니다.
예제 2: 파일 길이로 현재 디렉터리 정렬
이 명령은 현재 디렉터리의 파일을 오름차순으로 길이별로 표시합니다.
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
cmdlet은 Path 매개 변수로 지정된 디렉터리에서 파일을 가져옵니다.
File 매개 변수는 Get-ChildItem
파일 개체만 가져오라고 지정합니다. 개체는 파이프라인을 Sort-Object
cmdlet으로 보냅니다.
Sort-Object
Length 매개 변수를 사용하여 파일을 길이별로 오름차순으로 정렬합니다.
예제 3: 메모리 사용량별 프로세스 정렬
다음은 WS(작업 집합) 크기에 따라 메모리 사용량이 가장 높은 프로세스를 표시하는 예제입니다.
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
cmdlet은 컴퓨터에서 실행 중인 프로세스 목록을 가져옵니다. 프로세스 개체는 파이프라인을 Sort-Object
cmdlet으로 보냅니다.
Sort-Object
Property 매개 변수를 사용하여 WS 개체를 정렬합니다. 개체는 파이프라인을 Select-Object
cmdlet으로 보냅니다.
Select-Object
Last 매개 변수를 사용하여 WS 사용 가장 높은 개체인 마지막 5개의 개체를 지정합니다.
PowerShell 6에서 Sort-Object
매개 변수 BottomSelect-Object
대신 사용할 수 있습니다. 예를 들어 Get-Process | Sort-Object -Property WS -Bottom 5
.
예제 4: Id별 HistoryInfo 개체 정렬
이 명령은 Id 속성을 사용하여 PowerShell 세션의 HistoryInfo 개체를 정렬합니다. 각 PowerShell 세션에는 고유한 명령 기록이 있습니다.
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
cmdlet은 현재 PowerShell 세션에서 기록 개체를 가져옵니다. 개체는 파이프라인을 Sort-Object
cmdlet으로 보냅니다.
Sort-Object
속성 매개 변수를 사용하여 개체를 id기준으로 정렬합니다. 내림차순 매개 변수는 명령 기록을 최신에서 가장 오래된 값으로 정렬합니다.
예제 5: 해시 테이블을 사용하여 속성을 오름차순 및 내림차순으로 정렬
다음은 상태 DisplayName 두 속성을 사용하여 개체를 정렬하는 예제입니다. 상태 내림차순으로 정렬되고 DisplayName 오름차순으로 정렬됩니다.
해시 테이블은 속성 매개 변수 값을 지정하는 데 사용됩니다. 해시 테이블은 식을 사용하여 속성 이름과 정렬 순서를 지정합니다. 해시 테이블에 대한 자세한 내용은 about_Hash_Tables참조하세요.
해시 테이블에 사용되는 Status 속성은 열거된 속성입니다. 자세한 내용은 ServiceControllerStatus참조하세요.
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
cmdlet은 컴퓨터의 서비스 목록을 가져옵니다. 서비스 개체는 파이프라인을 Sort-Object
cmdlet으로 보냅니다.
Sort-Object
해시 테이블과 함께 Property 매개 변수를 사용하여 속성 이름과 정렬 순서를 지정합니다.
속성 매개 변수는 내림차순으로 상태 DisplayName 오름차순으로 두 속성을 기준으로 정렬됩니다.
상태 열거형 속성입니다.
중지된 값은 1, 실행 값은 4.
내림차순 매개 변수는 중지된 프로세스 전에 $true
프로세스가 표시되도록 .
DisplayName내림차순 매개 변수를 $false
설정하여 표시 이름을 사전순으로 정렬합니다.
예제 6: 시간 범위별로 텍스트 파일 정렬
이 명령은 CreationTimeLastWriteTime사이의 시간 범위별로 텍스트 파일을 내림차순으로 정렬합니다.
Get-ChildItem -Path C:\Test\*.txt |
Sort-Object -Property {$_.CreationTime - $_.LastWriteTime} |
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
cmdlet은 Path 매개 변수를 사용하여 디렉터리 C:\Test
및 모든 *.txt
파일을 지정합니다. 개체는 파이프라인을 Sort-Object
cmdlet으로 보냅니다.
Sort-Object
scriptblock과 함께 Property 매개 변수를 사용하여 CreationTimeLastWriteTime사이의 각 파일 시간 범위를 확인합니다.
예제 7: 텍스트 파일에서 이름 정렬
이 예제에서는 텍스트 파일에서 목록을 정렬하는 방법을 보여줍니다. 원래 파일은 정렬되지 않은 목록으로 표시됩니다.
Sort-Object
내용을 정렬한 다음 중복 항목을 제거하는 Unique 매개 변수를 사용하여 콘텐츠를 정렬합니다.
# All items unsorted
Get-Content -Path C:\Test\ServerNames.txt
localhost
server01
server25
LOCALHOST
Server19
server3
localhost
# All items sorted
Get-Content -Path C:\Test\ServerNames.txt | Sort-Object
localhost
LOCALHOST
localhost
server01
Server19
server25
server3
# Unique filtered items sorted
Get-Content -Path C:\Test\ServerNames.txt | Sort-Object -Unique
localhost
server01
Server19
server25
server3
Get-Content
cmdlet은 Path 매개 변수를 사용하여 디렉터리와 파일 이름을 지정합니다. 파일 ServerNames.txt
정렬되지 않은 컴퓨터 이름 목록이 포함되어 있습니다.
Get-Content
cmdlet은 Path 매개 변수를 사용하여 디렉터리와 파일 이름을 지정합니다. 파일 ServerNames.txt
정렬되지 않은 컴퓨터 이름 목록이 포함되어 있습니다. 개체는 파이프라인을 Sort-Object
cmdlet으로 보냅니다.
Sort-Object
목록을 기본 순서로 오름차순으로 정렬합니다.
Get-Content
cmdlet은 Path 매개 변수를 사용하여 디렉터리와 파일 이름을 지정합니다. 파일 ServerNames.txt
정렬되지 않은 컴퓨터 이름 목록이 포함되어 있습니다. 개체는 파이프라인을 Sort-Object
cmdlet으로 보냅니다.
Sort-Object
Unique 매개 변수를 사용하여 중복된 컴퓨터 이름을 제거합니다. 목록은 기본 순서로 오름차순으로 정렬됩니다.
예제 8: 문자열을 정수로 정렬
이 예제에서는 문자열 개체가 포함된 텍스트 파일을 정수로 정렬하는 방법을 보여 줍니다. 파이프라인 아래로 각 명령을 보내 Get-Member
개체가 정수가 아닌 문자열인지 확인할 수 있습니다. 이러한 예제의 경우 ProductId.txt
파일에는 정렬되지 않은 제품 번호 목록이 포함되어 있습니다.
첫 번째 예제에서 Get-Content
파일의 내용을 가져오고 줄을 Sort-Object
cmdlet으로 파이프합니다.
Sort-Object
문자열 개체를 오름차순으로 정렬합니다.
# String sorted
Get-Content -Path C:\Test\ProductId.txt | Sort-Object
0
1
12345
1500
2
2800
3500
4100
500
6200
77
88
99999
# Integer sorted
Get-Content -Path C:\Test\ProductId.txt | Sort-Object {[int]$_}
0
1
2
77
88
500
1500
2800
3500
4100
6200
12345
99999
두 번째 예제에서 Get-Content
파일의 내용을 가져오고 선을 Sort-Object
cmdlet으로 파이프합니다.
Sort-Object
스크립트 블록을 사용하여 문자열을 정수로 변환합니다. 샘플 코드에서 [int]
문자열을 정수로 변환하고 $_
파이프라인에서 나오는 각 문자열을 나타냅니다. 정수 개체는 파이프라인을 Sort-Object
cmdlet으로 보냅니다.
Sort-Object
정수 개체를 숫자 순서로 정렬합니다.
예제 9: 안정적인 정렬 사용
Top, Bottom또는 Stable 매개 변수를 사용하면 정렬 조건이 같을 때 정렬된 개체가 Sort-Object
받은 순서대로 전달됩니다. 이 예제에서는 숫자 1부터 20까지의 값을 'modulo 3'으로 정렬합니다. 모듈로 값의 범위는 0에서 2까지입니다.
1..20 |Sort-Object {$_ % 3}
18
3
15
6
12
9
1
16
13
10
7
4
19
11
8
14
5
17
2
20
1..20 |Sort-Object {$_ % 3} -Stable
3
6
9
12
15
18
1
4
7
10
13
16
19
2
5
8
11
14
17
20
첫 번째 정렬의 출력은 모듈러스 값으로 올바르게 그룹화되지만 개별 항목은 모듈러스 범위 내에서 정렬되지 않습니다. 두 번째 정렬은 안정 옵션을 사용하여 안정적인 정렬을 반환합니다.
예제 10: 여러 속성을 기준으로 정렬
여러 속성을 기준으로 정렬하려면 속성을 쉼표로 구분합니다.
Get-ChildItem -Path C:\Test | Sort-Object Length,Name
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 13/10/2021 22:16 2 File01.txt
-a--- 13/10/2021 22:16 2 File03.txt
-a--- 13/10/2021 22:18 64 File02.txt
-a--- 13/10/2021 22:18 64 File04.txt
Get-ChildItem
cmdlet은 Path 매개 변수로 지정된 디렉터리에서 파일을 가져옵니다.
개체는 파이프라인을 Sort-Object
cmdlet으로 보냅니다.
Sort-Object
Length 및 Name 매개 변수를 사용하여 파일을 길이별로 오름차순으로 정렬합니다.
File01.txt
File03.txt
길이가 같으므로 이름 속성따라 더 정렬됩니다.
예제 11: 키 값으로 해시 테이블 정렬
PowerShell 6부터 Sort-Object
키 값별 해시 테이블 입력의 정렬을 지원합니다. 다음 예제에서는 해시 테이블의 배열을 각 해시 테이블의 weight
키 값으로 정렬합니다.
@(
@{ name = 'a' ; weight = 7 }
@{ name = 'b' ; weight = 1 }
@{ name = 'c' ; weight = 3 }
@{ name = 'd' ; weight = 7 }
) | Sort-Object -Property weight -OutVariable Sorted
$Sorted | ForEach-Object -Process { "{0}: {1}" -f $_.name, $_.weight }
Name Value
---- -----
Weight 1
Name b
Weight 3
Name c
Weight 7
Name a
Weight 7
Name d
b: 1
c: 3
a: 7
d: 7
매개 변수
-Bottom
정렬된 개체 배열의 끝에서 가져올 개체 수를 지정합니다. 이렇게 하면 안정적인 정렬이 수행됩니다.
이 매개 변수는 PowerShell 6.0에서 도입되었습니다.
형식: | Int32 |
Position: | Named |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-CaseSensitive
정렬이 대/소문자를 구분한다는 것을 나타냅니다. 기본적으로 정렬은 대/소문자를 구분하지 않습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | Case-insensitive |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Culture
정렬에 사용할 culture 구성을 지정합니다.
Get-Culture
사용하여 시스템의 문화권 구성을 표시합니다.
형식: | String |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Descending
Sort-Object
개체를 내림차순으로 정렬했음을 나타냅니다. 기본값은 오름차순입니다.
여러 정렬 순서를 사용하여 여러 속성을 정렬하려면 해시 테이블을 사용합니다. 예를 들어 해시 테이블을 사용하면 한 속성을 오름차순으로 정렬하고 다른 속성을 내림차순으로 정렬할 수 있습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | Ascending |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-InputObject
개체를 정렬하려면 파이프라인 아래로 보내 Sort-Object
.
InputObject 매개 변수를 사용하여 항목 컬렉션을 제출하는 경우 Sort-Object
컬렉션을 나타내는 하나의 개체를 받습니다. 한 개체를 정렬할 수 없으므로 Sort-Object
전체 컬렉션을 변경하지 않고 반환합니다.
형식: | PSObject |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-Property
Sort-Object
개체를 정렬하는 데 사용하는 속성 이름을 지정합니다. 와일드카드가 허용됩니다.
개체는 속성 값에 따라 정렬됩니다. 속성을 지정하지 않으면 개체 형식 또는 개체 자체의 기본 속성을 기준으로 정렬할 Sort-Object
있습니다.
쉼표로 여러 속성을 구분합니다. 여러 속성을 오름차순, 내림차순 또는 정렬 순서의 조합으로 정렬할 수 있습니다. 여러 속성을 지정하면 개체가 첫 번째 속성별로 정렬됩니다. 여러 개체가 첫 번째 속성에 대해 동일한 값을 갖는 경우 해당 개체는 두 번째 속성을 기준으로 정렬됩니다. 이 프로세스는 더 이상 지정된 속성이나 개체 그룹이 없을 때까지 계속됩니다.
속성 매개 변수의 값은 계산된 속성일 수 있습니다. 계산된 속성을 만들려면 scriptblock 또는 해시 테이블을 사용합니다.
해시 테이블의 유효한 키는 다음과 같습니다.
-
Expression
-<string>
또는<script block>
-
Ascending
또는Descending
-<boolean>
자세한 내용은 about_Calculated_Properties참조하세요.
형식: | Object[] |
Position: | 0 |
Default value: | Default properties |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | True |
-Stable
정렬된 개체는 정렬 조건이 같을 때 받은 순서대로 전달됩니다.
이 매개 변수는 PowerShell v6.2.0에 추가되었습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Top
정렬된 개체 배열의 시작부터 가져올 개체 수를 지정합니다. 이렇게 하면 안정적인 정렬이 수행됩니다.
이 매개 변수는 PowerShell 6.0에서 도입되었습니다.
형식: | Int32 |
Position: | Named |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Unique
Sort-Object
중복을 제거하고 컬렉션의 고유한 멤버만 반환한다는 것을 나타냅니다. 고유 값의 첫 번째 인스턴스는 정렬된 출력에 포함됩니다.
고유 대/소문자를 구분하지 않습니다. 문자 대/소문자만 다른 문자열은 동일한 것으로 간주됩니다. 예를 들어 문자 및 CHARACTER입니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | All |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
정렬할 개체를 이 cmdlet으로 파이프할 수 있습니다.
출력
이 cmdlet은 정렬된 개체를 반환합니다.
참고
PowerShell에는 Sort-Object
다음과 같은 별칭이 포함되어 있습니다.
- Windows:
sort
Sort-Object
cmdlet은 명령에 지정된 속성 또는 개체 형식의 기본 정렬 속성을 기반으로 개체를 정렬합니다. 기본 정렬 속성은 PropertySet
파일에서 DefaultKeyPropertySet
명명된 types.ps1xml
사용하여 정의됩니다. 자세한 내용은 about_Types.ps1xml참조하세요.
개체에 지정된 속성 중 하나가 없는 경우 해당 개체의 속성 값은 Sort-Object
Null 해석되고 정렬 순서의 끝에 배치됩니다.
정렬 속성을 사용할 수 없는 경우 PowerShell은 개체 자체를 비교하려고 시도합니다.
Sort-Object
각 속성에 대해 Compare 메서드를 사용합니다. 속성이 IComparable 구현하지 않으면 cmdlet은 속성 값을 문자열로 변환하고 System.StringCompare 메서드를 사용합니다. 자세한 내용은 PSObject.CompareTo(Object) 메서드참조하세요.
Status같은 열거형 속성을 정렬하는 경우 Sort-Object
열거형 값을 기준으로 정렬됩니다. Windows 서비스의 경우 중지된 값이 1이고 실행 값은 4.
중지된 열거형 값으로 인해 실행 전에 정렬됩니다. 자세한 내용은 ServiceControllerStatus참조하세요.
정렬 알고리즘의 성능은 안정적인 정렬을 수행할 때 느립니다.