sourcecode

PowerShell 변수를 명령 매개 변수로 사용하는 방법은 무엇입니까?

copyscript 2023. 10. 11. 20:53
반응형

PowerShell 변수를 명령 매개 변수로 사용하는 방법은 무엇입니까?

변수를 명령어의 매개 변수로 사용하려고 하는데 정확히 알 수가 없습니다.예를 들면MyCommand는 두 개의 파라미터를 받아들입니다.option1그리고.option2부울 값을 받아들입니다.$newVar를 옵션 1 또는 2로 대체하려면 어떻게 해야 합니까?예를 들어,

$newVar = "option1"
MyCommand -$newVar:$true

'인수를 받아들이는 위치 매개 변수를 찾을 수 없습니다'-시스템의 행에 따라 계속 무언가가 표시됩니다.문자열 옵션 1'.


보다 구체적으로:
여기서 CSV 파일은 다른 정책의 출력입니다.루프는 파일의 각 속성을 통과하고 내 정책에서 그 값을 df로 설정합니다.-$_.name:$_.value로 대체해야 합니다.-AllowBluetooth:true.

Import-Csv $file | foreach-object {
    $_.psobject.properties | where-object {
    # for testing I'm limiting this to 'AllowBluetooth' option
    if($_.name -eq "AllowBluetooth"){
    Set-ActiveSyncMailboxPolicy -Identity "asdf" -$_.name:$_.value
    }}
}

일반적으로 변수를 사용하여 cmdlet 매개 변수를 채우려면 해시 테이블 변수를 사용하고 @을 사용하여 분할합니다.

 $newVar = @{option1 = $true}
 mycommand @newVar

예제 추가:

$AS_policy1 = @{
Identity = "asdf"
AllowBluetooth = $true
}

Set-ActiveSyncMailboxPolicy @AS_policy1

이 방법이 적합한지 확인해 보십시오.

 iex "MyCommand -$($newVar):$true"

저도 같은 문제를 겪고 해결 방법을 찾았습니다.솔루션은 invoke-Expression: invoke-Expression $mycmd$mycmd$mycmd$mycmd$cmd 문자열을 사용하고 변수를 교체하여 주어진 매개 변수로 cmdlet으로 실행합니다.

요즘에는 문자열을 명령어로 평가하는 것이 괜찮다면 다음을 사용할 수 있습니다.Invoke-Expression:

$mycmd = "MyCommand -$($newVar):$true"
Invoke-Expression $mycmd

저는 다음을 사용해 봅니다.

$mycmd = "MyCommand -$($newVar):$true"& $mycmd

결과

앰퍼샌드 연산자는 파라미터나 스크립트 블록 없이 단일 명령만 실행하기 때문에 작동할 수 없습니다.

언급URL : https://stackoverflow.com/questions/5956862/how-to-use-a-powershell-variable-as-command-parameter

반응형