在我做的目录中
Get-Item *.txt
当目录中有一个.txt文件时,它返回一个System.IO.FileSystemInfo
当有更多的.txt文件时,它会返回一个 的System.Array
处理这种不一致的最佳方法是什么?即我如何确定该函数是否返回了一个对象或一个数组。或者更好的是,Get-Item是否总能返回数组?
我想将结果传递给另一个函数。此函数需要一个System.IO.FileSystemInfo对象数组。
答案 0 :(得分:2)
您可以强制数组始终返回:
@(Get-Item *.txt)
答案 1 :(得分:0)
ForEach-Object
Get-Item *.txt | ForEach-Object {
# Do stuff
$_ # this represents the "current" object
}
答案 2 :(得分:0)
确保结果始终是数组的一种方法是将表达式包装在@():
中@(Get-Item *.txt)
答案 3 :(得分:0)
或者,如果您将结果保存在变量中供以后使用,只需指定[array]
[array]$list = Get-Item *.txt
如果你想要(例如)$ list.count只适用于数组,这很有用。否则你最终得到的代码如下:
if ( $result -eq $null) {
$count = 0
} elseif ($list -isnot [array]) {
$count = 1
} else {
$count = $result.count
}