Эта ошибка появляется при попытке выполнить независимый блок кода из цепочки конвейера.
В качестве другого примера представьте этот код, используя jQuery:
$("div").not(".main").console.log(this)
Каждая точка (.
) будет связывать массив в следующую функцию. В приведенной выше функции это разрывается с console
, потому что это не означает, что никакие значения не могут быть переданы по каналу. Если мы хотим выйти из цепочки, чтобы выполнить некоторый код (возможно, для объектов в цепочке - мы можем сделать это с each
, как это:
$("div").not(".main").each(function() {console.log(this)})
Решение powershell идентично. Если вы хотите запустить скрипт для каждого элемента в вашей цепочке отдельно, вы можете использовать ForEach-Object
или его псевдоним (%
).
Представьте, что у вас есть следующая функция в Powershell:
$settings | ?{$_.Key -eq 'Environment' } | $_.Value = "Prod"
Последняя строка не может быть выполнена, потому что это скрипт, но мы можем исправить это с помощью ForEach следующим образом:
$settings | ?{$_.Key -eq 'Environment' } | %{ $_.Value = "Prod" }