수색…
소개
Splatting은 여러 매개 변수를 명령에 단일 단위로 전달하는 방법입니다. 이 작업은 매개 변수와 해당 값을 해시 테이블 에 키 - 값 쌍으로 저장하고 splatting 연산자 @
사용하여 cmdlet에 스플 릿팅하는 방식으로 수행됩니다.
Splatting은 명령을보다 읽기 쉽게 만들 수 있으며 여러 명령 호출에서 매개 변수를 재사용 할 수 있습니다.
비고
참고 : Array 표현식 연산자 또는 @()
는 Splatting 연산자 @
매우 다른 동작을합니다.
about_Splatting @ TechNet 에서 자세한 내용을 읽어보십시오.
스플래팅 매개 변수
Splatting은 명령 호출에서 HashTable 매개 변수와 값을 포함하는 변수를 사용할 때 달러 기호 $
를 splatting 연산자 @
로 바꿈으로써 수행됩니다.
$MyParameters = @{
Name = "iexplore"
FileVersionInfo = $true
}
Get-Process @MyParameters
뿌리지 않고 :
Get-Process -Name "iexplore" -FileVersionInfo
일반적인 매개 변수를 스플래트 된 매개 변수와 결합하여 일반적인 매개 변수를 호출에 쉽게 추가 할 수 있습니다.
$MyParameters = @{
ComputerName = "StackOverflow-PC"
}
Get-Process -Name "iexplore" @MyParameters
Invoke-Command -ScriptBlock { "Something to excute remotely" } @MyParameters
Splatting을 사용하여 Switch 매개 변수 전달
Splatting을 사용하여 다음과 비슷한 -FileVersionInfo
스위치를 사용하여 Get-Process
를 호출하려면
Get-Process -FileVersionInfo
이것은 스플 렛팅을 사용하는 호출입니다.
$MyParameters = @{
FileVersionInfo = $true
}
Get-Process @MyParameters
참고 : 이것은 매개 변수의 기본 집합을 만들고 이처럼 여러 번 호출 할 수 있기 때문에 유용합니다
$MyParameters = @{
FileVersionInfo = $true
}
Get-Process @MyParameters -Name WmiPrvSE
Get-Process @MyParameters -Name explorer
배관 및 스플 렛팅
스 플랫을 선언하면 여러 번 매개 변수 집합을 약간 재현하거나 재사용 할 때 유용합니다.
$splat = @{
Class = "Win32_SystemEnclosure"
Property = "Manufacturer"
ErrorAction = "Stop"
}
Get-WmiObject -ComputerName $env:COMPUTERNAME @splat
Get-WmiObject -ComputerName "Computer2" @splat
Get-WmiObject -ComputerName "Computer3" @splat
그러나 재사용을 위해 들여 쓰기되지 않은 경우이를 선언하지 않을 수도 있습니다. 대신 파이프로 연결할 수 있습니다.
@{
ComputerName = $env:COMPUTERNAME
Class = "Win32_SystemEnclosure"
Property = "Manufacturer"
ErrorAction = "Stop"
} | % { Get-WmiObject @_ }
최상위 기능에서 일련의 내부 기능으로의 Splatting
splatting을 사용하지 않으면 호출 스택을 통해 값을 전달하고 전달하는 것이 매우 번거 롭습니다. 그러나 스플 랫팅 을 @PSBoundParameters 의 힘과 결합하면 레이어를 통해 최상위 레벨 매개 변수 컬렉션을 전달할 수 있습니다.
Function Outer-Method
{
Param
(
[string]
$First,
[string]
$Second
)
Write-Host ($First) -NoNewline
Inner-Method @PSBoundParameters
}
Function Inner-Method
{
Param
(
[string]
$Second
)
Write-Host (" {0}!" -f $Second)
}
$parameters = @{
First = "Hello"
Second = "World"
}
Outer-Method @parameters