Передача переменных в Foreach-Object Powershell 7
Что я хочу:
У меня есть скрипт, который копирует CAB-файлы на более чем сотню серверов и работает с ним на них. Этот сценарий работает больше недели. Когда я узнал о функции Foreach-Object -parallel, я подумал, что это значительно ускорит сценарий. Но я столкнулся с проблемой. Поскольку я не очень разбираюсь в PowerShell и нигде не нашел сообщения об этой проблеме, я подумал, что попробую удачу и спрошу здесь:
Ожидаемые и фактические результаты
Я хочу передать переменную в исполняемый блок сценария в командлете foreach-object, как здесь:
$test = "123"
1..3|foreach-object -parallel {param($test);echo "$_, $test"} -ArgumentList($test)
Чего я жду:
1, 123
2, 123
3, 123
Что я получаю:
ForEach-Object: Parameter set cannot be resolved using the specified named parameters. One or more parameters issued cannot be used together or an insufficient number of parameters were provided.
Что я делаю неправильно?
Это может быть тривиальная проблема. Но так как я никуда не денусь и не нахожу ни одного примера сообщения / кода. Я выкладываю это здесь. Я благодарен за ответы.
1 ответ
Можно упростить, что при использовании using
ключевое слово:-)
$test = "123"
1..3 | foreach-object -parallel { echo "$_, $($using:test)" }