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