.count%20%E5%82%B3%E5%9B%9E%E7%A9%BA%E5%88%97%E8%A1%A8%E6%88%96%E5%96%AE%E9%A0%85%E6%B8%85%E5%96%AE%E7%9A%84%E6%AD%A3%E7%A2%BA%E6%95%B8%E5%80%BC%EF%BC%9F.png)
當我嘗試取得項目計數時(例如,對(gci).count
資料夾中的檔案進行計數),PowerShell 不會傳回空列表或僅包含一項的清單的輸出。不過,它對於包含多個項目的清單效果很好。
如何讓 PowerShell 在所有情況下傳回正確的數值?即:如何讓它為空列表輸出實際的零,並為單項列表輸出一?
正如上面鏈接的相關問題中進一步描述的,我的特定用例是獲取列表中的項目計數,該列表是通過將gci
命令的輸出管道傳輸到where
.
答案1
這與以下事實有關:powershell 在傳回包含 1 項的陣列時會將陣列簡單地折疊為單項。
在版本 3 之前,這將導致一個沒有預期count
屬性的對象,並且您的結果將為空。這已被“修復”版本3。
所以你有兩個選擇:
- 升級到 Powershell v3
應用以下解決方法,始終將結果包裝為陣列類型
@()
:@(gci).count