Из моего сценария я хочу запустить некоторую команду в удаленном окне Windows. Итак, я немного погуглил и, похоже, самый популярный и в некотором роде стандартный способ сделать это — использовать командлет PowerShell Invoke-Command
, который, похоже, использует тот же протокол, что и winrm
и winrs
. Итак, ниже приведены команды, которые я пытался вызвать из своего скрипта (на самом деле я также пробовал много других их модификаций, но IMO этого достаточно, чтобы проиллюстрировать проблему):
PowerShell -Command "$encpass=ConvertTo-SecureString -AsPlainText mypass -Force;$cred = New-Object System.Management.Automation.PSCredential -ArgumentList myuser,$encpass; Invoke-Command -ComputerName REMOTE_COMPUTER_NAME -Credential $cred -ScriptBlock {<fullcommand>};"
PowerShell -Command "$encpass=ConvertTo-SecureString -AsPlainText mypass -Force;$cred = New-Object System.Management.Automation.PSCredential -ArgumentList myuser,$encpass; Invoke-Command -ComputerName REMOTE_COMPUTER_NAME -Credential $cred -ScriptBlock {Start-Process -FilePath <fullexepath> -ArgumentList <arguments> -Wait -NoNewWindow};"
PowerShell -Command "$encpass=ConvertTo-SecureString -AsPlainText mypass -Force;$cred = New-Object System.Management.Automation.PSCredential -ArgumentList myuser,$encpass;$session=new-PSSession -ComputerName "REMOTE_COMPUTER_NAME" -Credential $cred; Invoke-Command -Session $session -ScriptBlock {<fullcommand>};"
ПРИМЕЧАНИЕ: Скрипт написан на perl
, но ИМО здесь язык скрипта не имеет значения, поэтому можно предположить, что я вызываю команду из batch
скрипта, только учтите, что as команды должны запускаться из сценарий они не должны требовать каких-либо интерактивных действий.
Итак, у меня есть несколько проблем с этими командами, и мне нужна помощь, чтобы понять их. Они здесь:
- Не удается запустить процессы типа
configure and run daemon
. А именно, если я хочу запуститьconfigure_server.pl
на удаленном компьютере (<fullcommand> = "configure_server.pl <arguments>"
), который должен что-то делать, затем запуститьserver.exe
, это не сработает, потому что, как толькоconfigure_server.pl
будет выполнено, полное удаленное задание будет уничтожено, включаяserver.exe
, которое должно работать как демон. (относится к пунктам 1,2,3) - Получить перенос (длина каждой строки меньше или равна 80 символов) стандартный вывод и стандартная ошибка. (относится к пункту 1,3)
- Не получайте стандартный вывод и стандартную ошибку. (относится к пункту 2)