@skazi_premiere
Верстаем как умеем ;) HTML/CSS/JS

Передача имен параметров через переменные в PowerShell?

В PowerShell есть конструкции типа Set, например
Set-Content -Path 'C:\Logs\1.txt' -Value 'Текст для вывода'

Данная команда выведет значения в файл 'C:\Logs\1.txt'.
Есть команды которые умеют принимать имя параметра через массив с ключами
-prelace @{Ключ=Значение}
-clear @{Ключ=Значение}

С ними все хорошо они жуют переменные и вместо значение и вместо ключа.
-prelace @{$Key=$Value}
-clear @{$Key=$Value}

Например если сделать вот так
$Value= '-Value'
$Value.GetType().FullName - так мы узнаем что это System.String[]
Set-Content -Path 'C:\Logs\1.txt' $Value 'Текст для вывода'
Получим ошибку, нет параметра для приема значения 'Текст для вывода'

Собственно вопрос, каким образом можно передать через переменную не только значение но и ключ/параметр (-Path, -Value) в команду/функцию. Поясню в чем загвоздка, одному значению может соответствовать два разных ключа один для вызова в функции второй для передачи через массив. В целом костыль через массив работает, но всегда хочется чего то большего.
  • Вопрос задан
  • 1241 просмотр
Решения вопроса 1
@azarij
В меру опытный никто
$parms = @{'class'='Win32_BIOS';
'computername'='SERVER-R2';
'filter'='drivetype=3';
'credential'='Administrator'
}
Get-WmiObject @parms

как-то так.

$parms.computername = "whatever" - если нужно менять значение параметра на лету.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Сплаттинг чем-то не подходит?
https://technet.microsoft.com/ru-ru/library/gg6759...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы