【发布时间】:2013-07-23 09:20:58
【问题描述】:
从我的脚本中,我想在远程 Windows 框中运行一些命令。所以我用谷歌搜索了一下,似乎最流行和标准的方法是使用 PowerShell 的Invoke-Command cmdlet,它似乎使用与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 编写的,但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 点)
【问题讨论】:
标签: windows powershell powershell-2.0 remote-access invoke-command