如何讓 (gci).count 傳回空列表或單項清單的正確數值?

如何讓 (gci).count 傳回空列表或單項清單的正確數值?

有關的:
如何編寫腳本來計算特定月份內修改的檔案數量?

當我嘗試取得項目計數時(例如,對(gci).count資料夾中的檔案進行計數),PowerShell 不會傳回空列表或僅包含一項的清單的輸出。不過,它對於包含多個項目的清單效果很好。

在此輸入影像描述

如何讓 PowerShell 在所有情況下傳回正確的數值?即:如何讓它為空列表輸出實際的零,並為單項列表輸出一?

正如上面鏈接的相關問題中進一步描述的,我的特定用例是獲取列表中的項目計數,該列表是通過將gci命令的輸出管道傳輸到where.

答案1

這與以下事實有關:powershell 在傳回包含 1 項的陣列時會將陣列簡單地折疊為單項。

在版本 3 之前,這將導致一個沒有預期count屬性的對象,並且您的結果將為空。這已被“修復”版本3

所以你有兩個選擇:

  1. 升級到 Powershell v3
  2. 應用以下解決方法,始終將結果包裝為陣列類型@()

    @(gci).count

相關內容