Powershell Get-Item对象或数组

时间:2014-12-03 16:38:18

标签: arrays object powershell

在我做的目录中

Get-Item *.txt

当目录中有一个.txt文件时,它返回一个System.IO.FileSystemInfo

当有更多的.txt文件时,它会返回一个 的System.Array

处理这种不一致的最佳方法是什么?即我如何确定该函数是否返回了一个对象或一个数组。或者更好的是,Get-Item是否总能返回数组?

我想将结果传递给另一个函数。此函数需要一个System.IO.FileSystemInfo对象数组。

4 个答案:

答案 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
}