.count在多个powershell版本中

时间:2015-10-28 16:44:33

标签: powershell powershell-v2.0

我有一部分PowerShell脚本可以检查位置并验证文件数,然后根据计数运行检查。 powershell脚本在多台机器上运行,其中一台运行PowerShell 2.0。

我使用的是:

$folder = Get-Item "Parent Folder"
$files  = (Get-ChildItem $folder.Fullname)

当我检查$files.Count时,对于大于2.0的powershell版本,它将是准确的。 在Powershell 2.0中,如果files.Count仅包含1个文件,$files将不会返回任何内容。如果有多个文件,则返回正确的数字计数(非空)。

如果Get-ChildItem只返回一个值,我假设这与$files不是数组有关。

我知道检查powershell版本并修改每个版本的脚本可以解决这个问题,但我更愿意避免它。

还有其他方法可以在PowerShell的多个版本中统一检查计数吗?

1 个答案:

答案 0 :(得分:4)

这是一个已知的问题,你必须将返回值转换为PS 2.0的数组。它在PS 3.0中修复:

  

现在,您可以在任何对象上使用Count或Length,即使它没有   财产。如果对象没有Count或Length属性,   它将返回1(或$ null为$ null)。具有Count或的对象   长度属性将继续像往常一样工作。

示例:

$files = @(Get-ChildItem $folder.Fullname)

[array]$files = Get-ChildItem $folder.Fullname

参考文献: