Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Powershell获取项目对象或数组_Arrays_Object_Powershell - Fatal编程技术网

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
}