我有一個powershell腳本的一部分,檢查位置和驗證文件的計數,然後根據計數運行檢查。 powershell腳本運行在多臺機器上,其中一臺運行powershell 2.0。.count在多個PowerShell版本
我使用的是一樣的東西:
$folder = Get-Item "Parent Folder"
$files = (Get-ChildItem $folder.Fullname)
當我檢查$files.Count
它會在PowerShell中大於2.0的版本準確。 在Powershell 2.0中,如果$files
只包含1個文件,則files.Count
不會返回任何內容。如果有多個文件,則它返回正確的數量(非空)。
我假設這與$files
不是一個數組,如果Get-ChildItem只返回一個值。
我知道檢查PowerShell版本並修改每個版本的腳本將解決此問題,但我寧願避免它。
有沒有其他方法可以在多個版本的PowerShell中統一檢查計數?
恕我直言,不使用轉換''[數組]'。它在空管道的情況下不會返回空數組。如果管道返回單個元素並且該單個元素是集合,那麼轉換爲'[array]'將把集合的元素複製到數組,而不是像'@()'那樣將元素包裝到單個元素數組中。 – PetSerAl
@PetSerAl同意,謝謝澄清。有時''[array]'行爲更可取,因爲如果返回值爲空,它將包含'$ null',可以使用比較運算符輕鬆地進行比較。對於空數組來說並不那麼簡單,因爲當用於數組時,[比較運算符不會返回布爾值($ true或$ false)。他們返回符合條件的數組的所有成員。](http://stackoverflow.com/a/29614241/4424236) – beatcracker
如果數組爲空,則可以比較'$ array.Count -eq 0'或'不是$ array.Count'。 – PetSerAl