2011-09-09 4 views
3

연장 된 정전 발생시 가상 컴퓨터를 종료하는 데 사용되는 작은 Powershell 스크립트가 있습니다. 특정 VM 개체를 사용하고 강제로 종료합니다.Powershell을 사용하여 VM을 종료하십시오.

Function DirtyShutdown 
{ param([VMware.VimAutomation.ViCore.Impl.V1.Inventory.VirtualMachineImpl]$VM) 
$VM | Stop-VM -Confirm:$false 
} 

내가 병렬로 모든 작업을 실행하기 시작 작업 명령을 사용하여이 과정을 빠르게하고 싶습니다. 나는 올바른 것으로 믿는 다음을 포함한 몇 가지 변형을 시도했다. 이 문제를 나타나는 수신-작업 결과를 바탕으로

Start-Job -InputObject $VM -ScriptBlock{ $input | Shutdown-VMGuest -Confirm:$false } 

사용 (위의 함수를 호출하기 전에 추가)에 시작 - 작업의 맥락에서로드되지에서 간단합니다.

이 작업을 수행하기위한 올바른 구문은 무엇입니까?

+0

두 가지 답변이 있으며 둘 다 게시하고 모두가 좋아하는 것을 볼 것입니다. – halr9000

답변

6

이 작업을 위해 PowerShell v2의 작업 하위 시스템을 사용하고 싶습니다. vCenter에는 여기에서 활용할 수있는 기본 제공 작업 시스템이 있습니다. 환경을 변경하는 대부분의 PowerCLI cmdlet에는 RunAsync 매개 변수가 있습니다. 사람이 파워 쉘 코드의 조각을 실행하는 알고 :

get-help * -parameter runasync 

RunAsync 매개 변수는 명령 (들)을 타고 VCENTER에 그들을 대기합니다. cmdlet은 작업 개체를 반환 한 다음 즉시 컨트롤을 다시 스크립트로 반환합니다.

단순히과 같이, 당신의 정지-VM 명령의 마지막에 "-runasync"추가, 귀하의 경우 답변이 점을 설정하려면 :

$VM | Stop-VM -Confirm:$false -RunAsync 
+0

그게 내가 바라는 바로 그거야. 내가 리뷰 한 문서 중 RunAsync 옵션을 보지 못했고 몇 시간 째였다. 이런 날들이 나를 배쉬로 놓친다. –

+1

New-Alias ​​man Get-Help :) – halr9000

0

당신이 일을 시작할 때마다, PowerShell을 생성하는 새로운 런스 페이스. 이는 초기화해야 할 수도있는 새로운 환경을 의미하며 스냅인로드 및 VI 서버 연결을 포함합니다. Start-Job에는 InitializationScript라는 여기에서 사용할 수있는 매개 변수가 있습니다. 다음과 같이 시도하십시오.

Start-Job -InitializationScript { Add-PSSnapin VMware.VimAutomation.Core } { 
    Connect-ViServer myserver 
    Get-VM foo | Stop-VM 
} 
+0

실제로이 작업을 수행 할 수 없습니다. 작업은 무기한으로 실행됩니다. 그러나 구문은 소리가 나며 작동하는지 확인해야합니다. 나는 이것이 버그인지 또는 단지 저인지를 알기 위해 VMware 엔지니어링으로 스레드를 열었습니다. – halr9000

관련 문제