about_Simplified_Syntax
간단한 설명
개체 컬렉션에 대한 필터를 스크립팅하는 보다 쉽고 자연어적인 방법을 설명합니다.
자세한 설명
Windows PowerShell 3.0에 도입된 간소화된 구문을 사용하면 스크립트 블록을 사용하지 않고 일부 필터 명령을 빌드할 수 있습니다. 간소화된 구문은 자연어와 더 유사하며, 명령 및 해당 별칭 Where-Object
ForEach-Object
및 에 파이프되는 개체 컬렉션에 where
foreach
주로 유용합니다.
스크립트 블록 내의 자동 변수 $_
를 참조하지 않고 컬렉션의 멤버(가장 일반적으로 배열)에서 메서드를 사용할 수 있습니다.
다음 두 호출을 고려합니다.
표준 구문
Get-ChildItem Cert:\LocalMachine\Root |
Where-Object -FilterScript { $_.FriendlyName -eq 'Verisign' }
Get-ChildItem Cert:\ -Recurse |
ForEach-Object -FilterScript { $_.GetKeyAlgorithm() }
참고 항목
두 번째 명령에서 메서드는 컬렉션의 GetKeyAlgorithm
각 개체에 대해 호출됩니다. 파이프라인에서 받은 개체에 메서드가 GetKeyAlgorithm
없으면 명령에서 오류가 발생합니다.
간소화된 구문
간소화된 구문에서 컬렉션의 개체 멤버에서 작동하는 비교 연산자는 매개 변수로 구현됩니다. 또한 스크립트 블록 내의 자동 변수 $_
를 참조하지 않고 컬렉션의 개체에 대한 메서드를 호출할 수 있습니다. 다음 두 호출을 표준 구문 예제와 비교합니다.
Get-ChildItem Cert:\LocalMachine\Root |
Where-Object -Property FriendlyName -EQ 'Verisign'
Get-ChildItem Cert:\ -Recurse |
ForEach-Object -MemberName GetKeyAlgorithm
Property 및 MemberName 매개 변수는 위치이므로 명령에서 생략할 수 있습니다. 별칭을 사용하면 명령을 더 단순화할 수 있습니다.
dir Cert:\LocalMachine\Root | Where FriendlyName -EQ 'Verisign'
dir Cert:\ -Recurse | foreach GetKeyAlgorithm
두 구문이 모두 작동하는 동안 간소화된 구문은 스크립트 블록 내의 자동 변수 $_
를 참조하지 않고 결과를 반환합니다. 간소화된 구문은 자연어 문처럼 읽어 읽어 더 쉽게 이해할 수 있습니다.
메서드 이름은 GetKeyAlgorithm
의 MemberName대한 인수로 전달됩니다. 간소화된 구문을 사용하여 메서드를 호출하면 해당 개체에 해당 메서드가 있는 경우에만 파이프라인의 각 개체에 대해 메서드가 호출됩니다. 따라서 오류 없이 동일한 결과를 얻을 수 있습니다.
다음 예제 Description
에서는 의 MemberName전달됩니다. 이 명령은 반환된 각 System.Diagnostics.Process 개체 Get-Process
에 대한 설명을 표시합니다.
Get-Process | foreach Description
이 예제에서는 메서드 이름이 GetFiles
명령의 MemberName 매개 변수에 ForEach-Object
전달됩니다. 값이 .*
ArgumentList 매개 변수에 전달됩니다. 메서드 GetFiles()
가 반환된 각 .*
개체에 대한 검색 패턴 매개 변수 를 사용하여 호출됩니다Get-ChildItem
.
Get-ChildItem /home -Directory | foreach GetFiles .*
참고 항목
- about_Comparison_Operators
- about_Foreach
- forEach-Object
- Where-Object
PowerShell