我有一部分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的多个版本中统一检查计数吗?
答案 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
参考文献: