Я хочу использовать Powershell для вызова командного файла на удаленных машинах. Этот пакетный файл имеет аргументы. Вот что у меня есть:
$script = "\\fileshare\script.cmd"
$server = $args[0]
$args [string]::join(',',$args[1 .. ($args.count-1)])
Invoke-Command -computername $server {$script + ' ' + $args}
После небольшого поиска я обнаружил, что функция Invoke-Command выполняет свой скрипт-блок в совершенно новом процессе, поэтому вы не можете помещать в него переменные (они не будут расширены). Вот для чего нужен тег -ArgumentList. Поэтому я попробовал это вместо ...
Invoke-Command -computername $server {\\fileshare\script.cmd} -ArgumentList "FirstArgument"
Это тоже не сработало ... мой пакетный скрипт говорит мне, что ему не передаются никакие аргументы. Я не могу найти ничего, что прямо говорит об этом, но похоже, что параметр -ArgumentList работает только для скриптов Powershell (он не будет передавать их в пакетный скрипт).
Есть идеи, как использовать Invoke-Command для вызова командного файла с аргументами?