我有一個 PowerShell 腳本,它處理目錄中的所有檔案,但是當目錄中正好有 0 或 1 個檔案時它會中斷,我追查到它Get-ChildItem的意外行為:
mkdir C:\Temp\demo1 ; cd C:\Temp\demo1
(gci).Length # 0
# (gci).GetType().Name # error: null-valued expression
ni 1.txt
(gci).Length # 0 ???
(gci).GetType().Name # FileInfo
ni 2.txt
(gci).Length # 2
(gci).GetType().Name # Object[]
ni 3.txt
(gci).Length # 3
(gci).GetType().Name # Object[]
- 對于 0 項,
gci回傳$null - 對于 1 個專案,
gci回傳一個FileInfo物件 - 對于 2 項,按預期
gci回傳Object[]
我怎樣才能讓Get-ChildItem總是回傳一個Object[]?
uj5u.com熱心網友回復:
只需將呼叫包裝在陣列運算子 @(...)中,即@(gci):
mkdir C:\Temp\demo2 ; cd C:\Temp\demo2
@(gci).Length # 0
@(gci).GetType().Name # Object[]
ni 1.txt
@(gci).Length # 1
@(gci).GetType().Name # Object[]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/435597.html
標籤:电源外壳
