Как использовать переменную PowerShell в качестве параметра команды?
Я пытаюсь использовать переменную в качестве параметра команды, но не могу понять. Скажем MyCommand
примет два параметра:option1
и option2
и они принимают логические значения. Как бы я использовал $newVar заменить Вариант 1 или 2? Например:
$newVar = "option1"
MyCommand -$newVar:$true
Я продолжаю получать что-то вроде 'не удается найти позиционный параметр, который принимает аргумент' - System.Строка параметр1'.
Более Конкретно:
Здесь CSV-файл является результатом другой политики. Цикл проходит через каждое свойство в файле и устанавливает это значение в моей политике asdf; так -$_.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
}}
}
4 ответов
Как правило, чтобы использовать переменную для заполнения параметров командлета, вы должны использовать переменную хэш-таблицы и splat ее, используя @
$newVar = @{option1 = $true}
mycommand @newVar
добавлено:
$AS_policy1 = @{
Identity = "asdf"
AllowBluetooth = $true
}
Set-ActiveSyncMailboxPolicy @AS_policy1
Я бы попробовал с:
$mycmd = "MyCommand -$($newVar):$true" & $mycmd
результат
Не может работать, потому что оператор амперсанда просто выполняет отдельные команды без prameters или блоков скриптов.
У меня была такая же проблема и как решить ее. Решение использовать Invoke-выражение: вызвать выражение $mycmd Это использует $mycmd-string, заменяет переменные и выполняет его как командлет с заданными параметрами