2017-02-16 1 views
0

VM 게스트를 다시 시작하기 위해 ps1을 호출하는 배치 스크립트를 실행하려고합니다. 그것은 별도로 실행했을 때 작동하지만 문제는 인수없이 CMD로드의 powerCLI입니다. 단계에 의해 내가 시도 powerCLI VM 게스트를 스크립트에서 다시 시작합니다.

는 실행을 : cmd를에 다음

echo on 
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noe -c ". \"C:\Program Files (x86)\VMware\Infrastructure\PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\" $true" 

: 다음

connect -viserver -server "serverName" -Protocol https -User "user"-Password "pass" 

:

Restart-VM "VMserverName" -RunAsync -Confirm:$false 

는 모든하지만 시도가 결합 할 때 개별적으로 잘 작동됩니다 모든 것 - 작동하지 않습니다. 은 powerCLI가 콘솔보다 빨리로드되는 것처럼 보입니다.

내가

Start-Sleep -s 10 

명령을 시도하지만 성공했다.

위의 3 가지 명령을 어떻게 하나의 파일에 결합 할 수 있습니까?

답변

2

cmd에서 PowerShell 명령을 실행하려면 PowerShell의 Command-Switch를 사용하여 명령을 전달해야합니다.

다음 명령을 실행하여 당신이 원하는 것을 얻을 수 :

powershell -Command "Import-Module VMware.VimAutomation.Core; Connect-VIServer -Server <server> -User <user> -Password <password>; Restart-VM <vm_name> -RunAsync -Confirm:$false" 

이이 일을 매우 성가신 방법입니다. 나는 PowerShell을 사용하여 직접 제안하고 적어도 제대로 스크립트 포맷 할 수있을 것입니다 :

powershell -File <script> 
:

Import-Module VMware.VimAutomation.Core 
Connect-VIServer -Server <server> -User <user> -Password <password> 
Restart-VM <vm_name> -RunAsync -Confirm:$false 

하는 당신은 여전히 ​​파일 - 매개 변수를 사용하여, cmd를에서이 PowerShell 스크립트를 호출 할 수있을 것를

+0

은 마법처럼 작동합니다. :-) 나는 제안한대로 두 번째 해결책을 구현합니다. –

+0

'Restart-VM'은 VM의 하드 리셋을 트리거 할 것이고, 실제 머신의 리셋 버튼을 누르는 것과 동일합니다. 게스트를 완전히 재부팅하려면 대신 VM을 다시 시작하십시오. –

관련 문제