如何使用PowerShell检查任务中当前未运行的特定VMware VM?

时间:2018-11-30 13:20:30

标签: powershell vmware powercli

我需要检查特定的VMware VM当前是否在最近的任务中,例如CLone_task,Migrate_VMTask等。还要在VM迁移开始之前跳过该VM。

我尝试了以下代码:

PS> Get-Task (Get-VM -Name VM1) | Select State

Get-Task : Cannot bind parameter 'Status'. Cannot convert the "nalb00cava3"
value of type "VMware.VimAutomation.ViCore.Impl.V1.Inventory.VirtualMachineImpl"
to type "VMware.VimAutomation.Sdk.Types.V1.TaskState".
At line:1 char:10
+ Get-Task (Get-VM -Name nalb00cava3) | Select State
+          ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-Task], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,VMware.VimAutomation.ViCore.Cmdlets.Commands.GetTask 

1 个答案:

答案 0 :(得分:1)

这应该可以满足您的需求,最后一个管道就是您定义特定VM的地方。

Get-Task | ?{$_.ObjectId -match 'VirtualMachine'} | Select @{N='VM';E={(Get-View -Id $_.ObjectId).Name }},State,Description | where  {$_.VM -eq "VM1"}

它从Get-Task过滤ObjectId,然后引用ID,确定VM名称,最后在您定义的VM上过滤。