從我的腳本我想在遠程Windows機器上運行一些命令。所以我google了一下,似乎是最流行的,不知何故,標準的方法是使用PowerShell的Invoke-Command
cmdlet,它似乎使用與winrm
和winrs
相同的協議。因此,波紋管是我試圖從我的腳本調用命令(其實我試過很多其他的修改好,但IMO這些都足以說明問題):通過PowerShell運行遠程守護進程(不僅僅是)進程的問題
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
,但IMO在這裏腳本的語言並不重要,所以你可以假設我從batch
腳本調用命令,只需注意,因爲命令應該從腳本運行它們不應該需要任何交互式操作。
所以,我對這些命令有幾個問題,需要幫助才能弄明白。它們是:
- 無法運行
configure and run daemon
類型的進程。也就是說,如果我想在遠程盒子(<fullcommand> = "configure_server.pl <arguments>"
)上運行configure_server.pl
,這應該做一些事情,然後運行server.exe
,它不起作用,因爲一旦完成configure_server.pl
,完整的遠程作業將被殺死,包括server.exe
,這應該是作爲守護進程運行。 (適用於點1,2,3) - 獲取包裝(每行的長度小於或等於80個字符)標準輸出和標準錯誤。 (適用於第1,3點)
- 不得標準輸出和標準錯誤。 (適用於第2點)