3
我想从powershell脚本中产生远程主机上的进程,并让该进程在本地脚本退出后继续运行。远程命令是VMware Workstation附带的vmrun.exe
程序,该程序启动VM并立即退出。在远程机器上调用后台命令
我看到的行为是,一旦远程会话以脚本结束,vmware进程就会被终止。我希望这些进程能够继续运行。这是我使用的是什么至今:
function Start-VM {
param([String] $vmwareDir, [String] $vmDir, [String] $vm)
[String] $command = "& `"$vmwareDir\vmrun.exe`" start `"$vmDir\$vm`" nogui"
Invoke-Expression $command
}
[String] $hostname = "myhost.fqdn"
[String] $vmwareDir = "C:\Program Files (x86)\VMware\VMware Workstation"
[String] $vmDir = "C:\Path\To\VM"
[String] $vm = "my vm.vmx"
$session = New-PSSession -ComputerName $hostname
Invoke-Command -Session $session -AsJob -ScriptBlock ${function:Start-VM} -ArgumentList $vmwareDir, $vmDir, $vm
if(!$?){
Write-Host "Failed to start VM"
exit
}
sleep 60
有了这个代码,虚拟机已开始myhost.fqdn一直持续到60秒睡眠结束后,它与当地脚本一起遇难。在这种情况下,我只创建一个PSSession对象,作为远程过程只与会话一样长的概念证明。
在此先感谢!
编辑:
如果有助于澄清我想要做什么,在Linux的功能相当于将是这样的:
ssh myhost.fqdn "nohup my-command &>/dev/null &"
是啊!这工作得很好,谢谢! – 2012-07-30 20:35:35