PowerShell은 데이터 관리에 강력한 도구이지만 일반적으로 한 번에 너무 많은 정보를 제공합니다. 너무 많은 정보는 압도적이고 해석하기 어려울 수 있습니다. 걱정하지 마세요. PowerShell의 Select-Object
cmdlet을 활용하면 유용합니다.
이 튜토리얼에서는 Select-Object
cmdlet의 기본을 배워서 여러 가지 방법으로 결과를 좁히거나 필터링하는 방법을 알아보겠습니다.
계속 읽고 쉬운 데이터 관리를 시작해보세요!
전제 조건
이 튜토리얼은 실습을 포함하고 있습니다. 따라하기 위해서는 PowerShell이 설치된 시스템이어야 합니다. 이 튜토리얼은 PowerShell 7을 사용하는 Windows 10을 기준으로 하지만 다른 최신 버전도 작동할 것입니다.
PowerShell Select-Object cmdlet이란 무엇인가요?
Select-Object
cmdlet은 객체나 데이터 집합에서 특정 속성을 선택할 수 있도록 하여 데이터 관리를 간소화합니다. 동시에 속성의 이름을 변경하거나 기존 속성을 기반으로 계산된 속성을 만들 수도 있습니다.
기본 Select-Object
구문은 다음과 같습니다:
Parameter | Function |
---|---|
-InputObject |
Specifies the object or data set you want to work with, which can be an object, an array of objects, or an output of another cmdlet. |
Property |
Specifies the property or properties to select from the InputObject parameter. You can specify multiple properties separated by commas. |
Optional Parameters |
Allows you to refine your selection, such as selecting a certain number of objects or skipping objects. |
속성별로 객체 선택
Select-Object
cmdlet에 대한 자세한 소개가 필요하다면, 일반적인 사용 사례 중 하나로 시작해 보는 게 어떨까요? Select-Object
cmdlet을 사용하여 객체에서 특정 속성을 선택함으로써 이 튜토리얼을 시작하세요.
컴퓨터에서 실행 중인 프로세스 목록이 있다고 가정해 보겠습니다. 하지만 각 프로세스의 이름만 보고 싶은 경우입니다. Select-Object
cmdlet에 Name
속성을 지정하면 해결됩니다.
PowerShell을 열고 아래의 Get-Process
명령을 실행하여 모든 프로세스 목록을 가져와서 이름별로만 출력합니다 (Select-Object
) .

실행 중인 프로세스 외에도,
Select-Object
cmdlet을 사용하여 CSV 파일에서 작업할 수 있습니다. 많은 열이 있는 CSV 파일이 있지만 그 중 일부만 필요한 경우Select-Object
cmdlet을 사용하여 관련 있는 열만 선택하고 데이터를 조작하고 분석할 수 있습니다.
지금 다음 명령을 실행하여 여러 속성을 선택하십시오 (Select-Object
): Name
과 CPU
(쉼표로 구분). 이 기능은 각 개체의 일부 속성 만 필요한 대량 데이터 집합과 작업 할 때 도움이됩니다.
또한이 명령은 개체 목록을 CPU
속성을 참조로 사용하여 -Descending
순서로 정렬합니다 (Sort-Object
).
아래에서는 자원을 많이 소비하는 프로세스가 있는 경우 Google Chrome을 시작으로 프로세스 목록이 나열됩니다.

계산된 속성 만들기
당신의 요구에 더 적합한 속성을 찾을 때 계산된 속성을 만들어보십시오. 왜냐하면 계산된 속성을 통해 데이터를 조작하고 변환하거나 기존 속성을 결합하거나 수학적 연산을 수행하거나 특정한 방식으로 데이터를 포맷 할 수 있습니다.
계산된 속성을 만들려면 새로운 속성 이름과 속성 값을 계산하는 방법을 정의하는 표현식을 지정해야합니다:
다음 명령을 실행하여 다음을 수행하십시오:
- 실행 중인 프로세스 목록을 검색하고 (
Get-Process
),Name
과CPU
속성만 선택합니다 (Select-Object
). - 새로운 계산된 속성을 만들어서
Name
Memory (MB)
을 사용하십시오. 이는 각 프로세스의 메모리 사용량을 메가바이트로 계산합니다. 메모리 사용량은Expression
을 사용하여WorkingSet
속성을1MB
로 나눈 것입니다. 유효한 PowerShell 식을 사용하여 계산된 속성을 만들 수 있습니다. - 계산된
Memory (MB)
속성을 사용하여 검색된 모든 실행 중인 프로세스를 계산된-Descending
순서로 출력합니다.

지정된 속성 제외
현실에서 Select-Object
명령의 결과에는 사용자 이름 및 암호와 같은 민감한 정보가 포함될 수 있습니다. 이 위험을 피하는 방법은 무엇인가요?
출력에서 민감한 데이터가 표시되지 않도록 하려면 -ExcludeProperty
매개변수를 추가하여 출력에서 특정 속성을 제외합니다.
다음 명령을 실행하여 다음 작업을 수행합니다:
- 지정된 디렉터리(
C:\\
)에서 모든 파일 및 폴더(Get-ChildItem
)의 목록을 재귀적으로 검색합니다(-Recurse
).
- 파이프 출력을
Select-Object
cmdlet에 전달하여Name
,Length
, 및LastWriteTime
속성을 선택하십시오. - 출력에서
FullName
속성을 제외하십시오(-ExcludeProperty
). 이렇게 함으로써 출력에 전체 경로가 표시되지 않아 기밀 정보가 드러나지 않습니다.

처음이나 마지막 개체 수 생략하기
대규모 데이터 집합을 다룰 때 필요한 데이터를 찾는 것은 석탄 광산에서 다이아몬드를 찾는 것과 같을 수 있습니다. 하지만 불필요한 데이터를 걸러내는 데 시간을 낭비할 이유가 있을까요?
PowerShell에서 Select-Object
cmdlet은 출력에서 처음 몇 개(-Skip
)나 마지막 몇 개(-SkipLast
)의 개체를 제외할 수 있는 두 개의 매개변수를 제공합니다.
출력에서 여러 개체를 건너뛰는 방법을 보려면 다음과 같이 실행하십시오:
아래 명령을 실행하여 모든 실행 중인 프로세스(Get-Process
)를 가져오되 처음 100
개의 개체는 -Skip
합니다.
건너뛰는 개체 수는 정수 값(소수점 없는 양의 정수)에 기반하므로 이 경우에는
100
입니다.

이제 다음 명령을 실행하여 작업 디렉터리의 내용(Get-ChildItem
) 목록을 가져오되 마지막 100
개의 개체는 건너뜁니다(-SkipLast
).

개체의 처음이나 마지막 개수 선택하기
다음은 첫 번째와 마지막 객체를 건너뛰는 대신 첫 번째와 마지막 객체를 선택하는 것이 흥미로울 수 있습니다. Select-Object
cmdlet은 First
및 Last
매개변수를 사용하여 다른 모든 것을 건너뛰어 시간과 리소스를 절약할 수 있습니다.
다음 명령을 실행하여 모든 프로세스를 가져오지만 반환된 객체 중에서는 -First 10
객체만 선택합니다.

이제 아래 명령을 실행하여 작업 디렉터리의 모든 내용을 가져오지만 반환된 객체 중에서는 -Last 10
객체만 선택합니다.

배타적으로 고유한 객체 선택
더 큰 데이터 집합과 작업할 때 일반적으로 출력에서 제외하려는 중복 값이 발생할 것입니다. 그러나 Select-Object
cmdlet을 사용하면 중복 값을 수동으로 제외할 필요가 없습니다.
-Unique
매개변수를 추가하면 출력에서 고유한 객체만 선택하여 분석을 간소화하고 결과의 정확성을 향상시킬 수 있습니다.
다음 명령을 실행하여 -First 2
객체를 선택하고 반환하세요.
아래에서는 다른 객체가 중복 값인지 여부와 관계없이 두 개의 반환된 객체를 볼 수 있습니다.

마지막으로 다음 명령을 실행하여 각 -First 2
객체에 대해 하나의 -Unique
값을 반환합니다.
이번에는 다른 값이 중복이므로 처음 두 객체 중에서 하나만 반환된 것을 볼 수 있습니다. 이 출력을 통해 -Unique
매개 변수가 데이터에서 중복된 객체를 빠르게 삭제하는 데 유용하다는 것을 알 수 있습니다.

결론
PowerShell은 정보를 과다하게 생성하는 경향이 있습니다. 그러나 이 튜토리얼에서는 PowerShell Select-Object
cmdlet이 데이터를 스트림으로 보여주어 필요한 정보만 볼 수 있도록 도와준다는 것을 배웠습니다.
여러 가지 매개 변수가 출력에서 데이터를 선택하고 제외하는 방법을 확인했습니다. Select-Object
cmdlet을 사용하면 대량의 데이터를 관리하는 것이 번거로운 작업이 되지 않습니다.
이 시점에서 결과를 더 잘 분석하고 문제 해결에 적합하게 다듬을 수 있습니다. 하지만 왜 다음으로 계산된 속성을 형식화하는 방법을 배우지 않을까요? 그러면 가독성과 사용성을 향상시킬 수 있습니다.
Source:
https://adamtheautomator.com/powershell-select-object/