Arrays Powershell获取项目对象或数组
在一个目录中我做了Arrays Powershell获取项目对象或数组,arrays,object,powershell,Arrays,Object,Powershell,在一个目录中我做了 Get-Item *.txt 当目录中有一个.txt文件时,它将返回System.IO.FileSystemInfo 当有更多的.txt文件时,它返回一个 系统数组 处理这种不一致性的最佳方法是什么?即,如何确定函数是否返回了对象或数组。或者更好的是,有没有一种方法让Get Item总是返回一个数组 我想把结果传给另一个函数。此函数需要System.IO.FileSystemInfo对象数组。使用ForEach对象 Get Item*.txt | ForEach对象{ #做
Get-Item *.txt
当目录中有一个.txt文件时,它将返回System.IO.FileSystemInfo
当有更多的.txt文件时,它返回一个
系统数组
处理这种不一致性的最佳方法是什么?即,如何确定函数是否返回了对象或数组。或者更好的是,有没有一种方法让Get Item总是返回一个数组
我想把结果传给另一个函数。此函数需要System.IO.FileSystemInfo对象数组。使用ForEach对象
Get Item*.txt | ForEach对象{
#做事
$35;这表示“当前”对象
}
您可以强制数组始终返回:
@(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
}
非常感谢。这个解决方案也很棒。这正是我想要的。
if ( $result -eq $null) {
$count = 0
} elseif ($list -isnot [array]) {
$count = 1
} else {
$count = $result.count
}