수색…


소개

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


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow