다음을 통해 공유


Sort-Object

속성 값을 기준으로 개체를 정렬합니다.

구문

Default (기본값)

Sort-Object
    [[-Property] <Object[]>]
    [-Descending]
    [-Unique]
    [-InputObject <psobject>]
    [-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개의 개체를 지정합니다.

예제 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: 여러 속성으로 정렬

여러 속성을 기준으로 정렬하려면 속성을 쉼표로 구분합니다.

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 LengthName 매개 변수를 사용하여 파일을 길이별로 오름차순으로 정렬합니다. File01.txt File03.txt 길이가 같으므로 이름 속성따라 더 정렬됩니다.

예제 10: 계산된 속성을 사용하여 키 값으로 해시 테이블 정렬

이 예제에서는 해시 테이블 개체를 해당 키 값으로 정렬하는 방법을 보여줍니다. Property 매개 변수에 하나 이상의 scriptblock을 지정할 수 있습니다. 이러한 scriptblock의 식은 명명된 속성 값과 같은 입력의 정렬 순서를 결정하는 데 사용됩니다.

@(
    @{ name = 'a' ; weight = 7 }
    @{ name = 'b' ; weight = 1 }
    @{ name = 'c' ; weight = 3 }
    @{ name = 'd' ; weight = 7 }
) | Sort-Object -Property { $_.weight }, { $_.name } -OutVariable Sorted

$Sorted | ForEach-Object -Process { "{0}: {1}" -f $_.name, $_.weight }

{ $_.weight }{ $_.name } 식은 입력 해시 테이블을 먼저 해당 weight 키 값으로 정렬한 다음 name 키의 값으로 정렬합니다. Sort-Object 명령은 OutVariable 매개 변수를 사용하여 결과를 변수에 저장하고 결과를 동일한 호출에 표시합니다.

마지막 명령은 정렬된 해시 테이블을 반복하여 이름과 가중치를 문자열로 표시합니다.

매개 변수

-CaseSensitive

정렬이 대/소문자를 구분한다는 것을 나타냅니다. 기본적으로 정렬은 대/소문자를 구분하지 않습니다.

매개 변수 속성

형식:SwitchParameter
Default value:Case-insensitive
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Culture

정렬에 사용할 culture 구성을 지정합니다. Get-Culture 사용하여 시스템의 문화권 구성을 표시합니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Descending

Sort-Object 개체를 내림차순으로 정렬했음을 나타냅니다. 기본값은 오름차순입니다.

여러 정렬 순서를 사용하여 여러 속성을 정렬하려면 해시 테이블을 사용합니다. 예를 들어 해시 테이블을 사용하면 한 속성을 오름차순으로 정렬하고 다른 속성을 내림차순으로 정렬할 수 있습니다.

매개 변수 속성

형식:SwitchParameter
Default value:Ascending
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-InputObject

개체를 정렬하려면 파이프라인 아래로 보내 Sort-Object. InputObject 매개 변수를 사용하여 항목 컬렉션을 제출하는 경우 Sort-Object 컬렉션을 나타내는 하나의 개체를 받습니다. 한 개체를 정렬할 수 없으므로 Sort-Object 전체 컬렉션을 변경하지 않고 반환합니다.

매개 변수 속성

형식:PSObject
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:True
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Property

Sort-Object 개체를 정렬하는 데 사용하는 속성 이름을 지정합니다. 와일드카드가 허용됩니다. 개체는 속성 값에 따라 정렬됩니다. 속성을 지정하지 않으면 개체 형식 또는 개체 자체의 기본 속성을 기준으로 정렬할 Sort-Object 있습니다.

쉼표로 여러 속성을 구분합니다. 여러 속성을 오름차순, 내림차순 또는 정렬 순서의 조합으로 정렬할 수 있습니다. 여러 속성을 지정하면 개체가 첫 번째 속성별로 정렬됩니다. 여러 개체가 첫 번째 속성에 대해 동일한 값을 갖는 경우 해당 개체는 두 번째 속성을 기준으로 정렬됩니다. 이 프로세스는 더 이상 지정된 속성이나 개체 그룹이 없을 때까지 계속됩니다.

속성 매개 변수의 값은 계산된 속성일 수 있습니다. 계산된 속성을 만들려면 scriptblock 또는 해시 테이블을 사용합니다.

해시 테이블의 유효한 키는 다음과 같습니다.

  • Expression - <string> 또는 <script block>
  • Ascending 또는 Descending - <boolean>

보다 자세한 내용을 보려면 about_Calculated_Properties을 참조하십시오.

매개 변수 속성

형식:

Object[]

Default value:Default properties
와일드카드 지원:True
DontShow:False

매개 변수 집합

(All)
Position:0
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Unique

Sort-Object 중복을 제거하고 컬렉션의 고유한 멤버만 반환한다는 것을 나타냅니다. 고유 값의 첫 번째 인스턴스는 정렬된 출력에 포함됩니다.

고유 대/소문자를 구분하지 않습니다. 문자 대/소문자만 다른 문자열은 동일한 것으로 간주됩니다. 예를 들어 문자 및 CHARACTER입니다.

매개 변수 속성

형식:SwitchParameter
Default value:All
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

CommonParameters

이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.

입력

PSObject

정렬할 개체를 이 cmdlet으로 파이프할 수 있습니다.

출력

PSObject

이 cmdlet은 정렬된 개체를 반환합니다.

참고

Windows PowerShell에는 다음과 같은 Sort-Object의 별칭이 포함되어 있습니다.

  • sort

Sort-Object cmdlet은 명령에 지정된 속성 또는 개체 형식의 기본 정렬 속성을 기반으로 개체를 정렬합니다. 기본 정렬 속성은 PropertySet 파일에서 DefaultKeyPropertySet 명명된 types.ps1xml 사용하여 정의됩니다. 자세한 내용은 about_Types.ps1xml참조하세요.

개체에 지정된 속성 중 하나가 없는 경우 해당 개체의 속성 값은 Sort-ObjectNull 해석되고 정렬 순서의 끝에 배치됩니다.

정렬 속성을 사용할 수 없는 경우 PowerShell은 개체 자체를 비교하려고 시도합니다. Sort-Object 각 속성에 대해 Compare 메서드를 사용합니다. 속성이 IComparable 구현하지 않으면 cmdlet은 속성 값을 문자열로 변환하고 System.StringCompare 메서드를 사용합니다. 자세한 내용은 PSObject.CompareTo(Object) 메서드참조하세요.

Status같은 열거형 속성을 정렬하는 경우 Sort-Object 열거형 값을 기준으로 정렬됩니다. Windows 서비스의 경우 중지된 값이 1이고 실행 값은 4. 중지된 열거형 값으로 인해 실행 전에 정렬됩니다. 자세한 내용은 ServiceControllerStatus참조하세요.