Я пытаюсь создать сценарий, который копирует файлы и выполняет их на определенном количестве серверов.
Для этого мне нужно запустить удаленную команду. Я сохранил это в переменной.
Я знаю, что переменные нельзя использовать в удаленном сеансе. За исключением того, что вы используете параметр -ArgumentList. Но и у меня это тоже не работает.
Вот код и сообщение об ошибке:
$CMD_AgentDirectory = "New-Item -Path 'C:\FlexAgent' -ItemType Directory"
Invoke-Command -ComputerName Server01 -ScriptBlock {
Invoke-Expression $CMD_AgentDirectory
} -ArgumentList $CMD_AgentDirectory
Сообщение об ошибке:
Cannot bind argument to parameter 'Command' because it is null.
+ CategoryInfo : InvalidData: (:) [Invoke-Expression], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.InvokeExpressionCommand
+ PSComputerName : Server01
Что я делаю неправильно?
Добавьте param($CMD_AgentDirectory) перед Invoke-Expression
Боковое примечание: Invoke-Expression практически всегда неправильный инструмент. Просто поместите командную строку New-Item непосредственно в блок сценария (без двойных кавычек) или создайте блок сценария из этой командной строки.





Какая версия Powershell работает на хосте и в месте назначения?