2015-01-06 30 views
-1

因此,這裏是有趣的時代:我有一個列中的虛擬服務器值的數組等。有一個ForEach循環,每個服務器經歷,我試圖淘汰服務器對磁盤的計數爲0。這裏是我的語法:PowerCLI問題與硬盤驅動器計數返回值

$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}」,但得到了以下錯誤:

Cannot compare "@{Count=2}" to "0" because the objects are not the same type or the object "@{Count=2}" does not implement "IComparable".

編輯: 嘗試使用@ {COUNT = 0}而不是「@ {Count = 0}」,但它沒有什麼區別 - CSV仍然在其中包含@ {Count = 0}的列。

回答

0

儘管沒有解釋或幫助(這麼好的介紹計算器)被downvoted,同事幫我想出解決辦法:

的$ VMInfo.Disks線之上基本上在結果​​中創建一個哈希表 - 這是爲什麼電子表格會顯示@ {Count = 0}。在上面的$ VMInfo.Disks行之後需要做的事情是使用以下行:

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

這將返回一個整數。因爲它會返回一個整數,所以我可以使用if語句:

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

現在我很好!