2012-07-30 35 views
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 &" 

回答

1

this answer,我分析问题并给予解决方法(请参阅最后编辑)。我不确定你的问题是否真的是重复的。

+0

是啊!这工作得很好,谢谢! – 2012-07-30 20:35:35

相关问题