Таким образом, проблема здесь действительно проста ... -ArgumentList
принимает массив объектов, но вы не передаете его как массив. Вот что у вас есть:
Invoke-command -computerName $computerName -ScriptBlock {Set-Content -path $args[0] -value "$($args[1])"} -argumentList $($file.FullName) $content
Вот, как я полагаю, ваше намерение по параметрам:
-computerName = $computerName
-ScriptBlock = {Set-Content -path $args[0] -value "$($args[1])"}
-argumentList = $($file.FullName), $content
Проблема в том, что у вас нет запятой между $($file.FullName)
и $content
, поэтому он не видит их как массив объектов, он видит $($file.FullName)
как значение для -argumentList
, а затем видит $content
как отдельный объект, который пытается оценить как позиционный параметр, но не может определить, каким позиционным параметром он может быть. Решение состоит в том, чтобы добавить запятую между двумя элементами:
Invoke-command -computerName $computerName -ScriptBlock {Set-Content -path $args[0] -value "$($args[1])"} -argumentList $($file.FullName),$content