有效过滤列表的有效方法?

时间:2012-11-13 13:42:56

标签: powershell powercli

我正在尝试从vcenter获取所有VM的列表,但如果其名称包含我在另一个列表中的字符串之一,则从列表中排除VM。

$vm_list = Get-Datacenter | Get-VM 

$vm_list content:

vm1233
vm4566
vm7890
vm3330
vm9990

现在我想从名称中的列表中排除任何包含其中一个字符串的VM:

$exluded_vms = @('33', '66')

最好的方法是什么?

感谢。

1 个答案:

答案 0 :(得分:4)

我用这个:

[regex]$exluded_vms = '33|66'
 $vm_list = Get-Datacenter | Get-VM  | ? { $_.NAME -NOTMATCH $exluded_vms}

更有效的方法是使用get-view

   get-view -viewtype virtualmachine -filter @{'name'='^((?!33|66).)*$'} 

最后一个提供有关VM的更多信息,您可以将结果通过管道传输到| select name以限制输出