Передача переменных в 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)" } 
Другие вопросы по тегам