具有硬盘驱动器计数返回值的PowerCLI问题

时间:2015-01-06 20:38:54

标签: powercli

所以这里有趣的时间:我有一个列中包含虚拟服务器值的数组等。每个服务器经历的ForEach循环,我试图清除服务器磁盘数为0。这是我的语法:

$VMInfo.Disks = Get-HardDisk -VM $VM | Measure-Object | Select-Object Count

在导出的CSV文件中,如果不是硬盘,则该列的值为{{Count = 0}。所以我想这个if语句是从报告中清除这些服务器的好方法(这个if语句是ForEach整体命令的一部分):

if ($VMInfo.Disks -ne "@{Count=0}") {
      $Report += $VMInfo
      }

但是,当我包含if语句时,我仍然会在导出的CSV文件中包含没有硬盘驱动器的服务器。有任何想法吗?我是否需要更改$ VMInfo.Disks -ne" @ {Count = 0}"命令别的?任何帮助将不胜感激!

编辑: 试图使用-gt 0而不是-ne" @ {Count = 0}"但得到了以下错误:

  

无法比较" @ {Count = 2}"到" 0"因为对象不是   相同的类型或对象" @ {Count = 2}"没有实施" IComparable"。

编辑: 试图使用@ {Count = 0}代替" @ {Count = 0}"但它没有什么区别 - CSV中仍然有@ {Count = 0}的列。

1 个答案:

答案 0 :(得分:0)

尽管没有任何解释或帮助(对stackoverflow这么好的介绍)被低估了,但是一位同事帮助我解决了这个问题:

上面的$ VMInfo.Disks行基本上在结果​​中创建了一个哈希表 - 这就是电子表格显示@ {Count = 0}的原因。在上面的$ VMInfo.Disks行之后我需要做的是使用以下行:

$VMInfo.Disks = ($VMInfo.Disks).Count

那将返回一个整数。因为它会返回一个整数,所以我可以使用这个if语句:

if ($VMInfo.Disks -ne 0) {
  $Report += $VMInfo
  }

现在我很好!