【问题标题】:Efficient way to filter against a list on the fly?动态过滤列表的有效方法?
【发布时间】:2012-11-13 13:42:55
【问题描述】:

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

$vm_list = Get-Datacenter | Get-VM 

$vm_list content:

vm1233
vm4566
vm7890
vm3330
vm9990

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

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

最好的方法是什么?

谢谢。

【问题讨论】:

    标签: powershell powercli


    【解决方案1】:

    我用这个:

    [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 以限制输出

    【讨论】:

      猜你喜欢
      • 2010-12-07
      • 2011-12-14
      • 2017-09-29
      • 2017-05-19
      • 1970-01-01
      • 2014-06-09
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      相关资源
      最近更新 更多