我想从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
使用此代码,VM将在myhost.fqdn上启动并运行直到60秒睡眠结束,之后它将与本地脚本一起被杀死。我只是在这种情况下创建一个PSSession对象作为概念证明,远程进程只在会话中存在。
提前致谢!
编辑:
如果它有助于澄清我想做什么,Linux中的功能等同物将是:
ssh myhost.fqdn "nohup my-command &>/dev/null &"