Powershell Get-Item Object or Array



在目录中我做

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
}

相关内容

最新更新