3

PowerShellスクリプトからリモートホスト上にプロセスを生成し、ローカルスクリプトが終了した後もそのプロセスを実行し続けたいと思います。remoteコマンドは、vmrun.exeVMware Workstationに付属するプログラムであり、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 &"
4

1 に答える 1

1

この回答では、問題を分析して回避策を示します(最後に編集されたものを参照)。あなたの質問が本当に重複しているのかわかりません。

于 2012-07-30T19:59:31.273 に答える