netsh не работает при запуске через Invoke-Command - PullRequest
0 голосов
/ 26 апреля 2018

Когда я запускаю следующее локально на сервере, оно прекрасно работает.

$NetshArgumentList = 'advfirewall firewall add rule name="Zabbix Agent" dir=in action=allow program="C:\zabbix\bin\win64\zabbix_agentd.exe" enable=yes'
Start-Process -FilePath 'netsh' -ArgumentList $NetshArgumentList

Но когда я пытаюсь запустить его удаленно, это не сработает.

$ComputerName = 'Remote-Host'
$NetshArgumentList = 'advfirewall firewall add rule name="Zabbix Agent" dir=in action=allow program="C:\zabbix\bin\win64\zabbix_agentd.exe" enable=yes'
Invoke-Command -ComputerName $ComputerName -ScriptBlock {Start-Process -FilePath 'netsh' -ArgumentList $using:NetshArgumentList}

Любые предложения о том, почему это и как это исправить?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Я наконец понял это. Использование Invoke-Expression теперь работает. вот рабочий код:

$ComputerName = 'Remote-Host'
$NetshArgumentList = 'advfirewall firewall add rule name="Zabbix Agent" dir=in action=allow program="C:\zabbix\bin\win64\zabbix_agentd.exe" enable=yes'
Invoke-Command -ComputerName $ComputerName -ScriptBlock {Invoke-Expression "netsh $using:NetshArgumentList"}
0 голосов
/ 26 апреля 2018

$NetshArgumentList не отображается в удаленном сеансе. Вы можете попросить PowerShell скопировать его с помощью модификатора области действия using: :

$ComputerName = 'Remote-Host'
    $NetshArgumentList = 'advfirewall firewall add rule name="Zabbix Agent" dir=in action=allow program="C:\zabbix\bin\win64\zabbix_agentd.exe" enable=yes'
    Invoke-Command -ComputerName $ComputerName -ScriptBlock {Start-Process -FilePath 'netsh' -ArgumentList $using:NetshArgumentList}
...