2012-07-30 3 views
3

원격 호스트에서 powershell 스크립트로 프로세스를 생성하고 로컬 스크립트가 종료 된 후에 해당 프로세스를 계속 실행하고 싶습니다. 원격 명령은 VM 워크 스테이션과 함께 제공되는 vmrun.exe 프로그램으로, VM을 시작하고 즉시 종료됩니다.원격 컴퓨터에서 background 명령을 호출하십시오.

내가보고있는 동작은 원격 세션이 스크립트로 끝나는 즉시 VM웨어 프로세스가 종료된다는 것입니다. 프로세스를 계속 실행하고 싶습니다.

이 코드
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 객체는 원격 프로세스가 세션 동안 만 존재한다는 개념 증명으로 만 생성됩니다.

미리 감사드립니다.

편집 :

는 내가하고 싶은 것을 명확히하기 위해 도움이된다면, 리눅스의 기능 상응하는 무언가 같이 될 것이다 :

ssh myhost.fqdn "nohup my-command &>/dev/null &" 

답변

1

this answer, 나는이 문제를 분석하고 제공 해결 방법 (끝에 편집 참조). 귀하의 질문이 실제로 중복 된 것인지 확신 할 수 없습니다.

+0

예! 이 위대한, 고마워! –

관련 문제