Test-Path传入路径数组时返回异常$true的问题排查
Test-Path传入数组时返回$true的原因及解决办法
问题根源:当
Test-Path接收数组格式的路径参数时,它会返回一个对应每个路径是否存在的布尔值数组——你当前的场景下返回的就是@($false, $false, $false, $false)。而PowerShell的if条件判断规则里,任何非空数组都会被判定为$true,哪怕数组里全是$false,所以你的代码会进入$true分支。正确的判断方式:
- 要检查所有路径都存在:
PowerShell 7及以上版本可直接用-All开关:
兼容旧版本的话,可借助数组的if (Test-Path -Path $arr -All) { $true } else { $false }-notcontains方法:$results = Test-Path -Path $arr if ($results -notcontains $false) { $true } else { $false } - 要检查至少一个路径存在:
用数组的-contains方法:$results = Test-Path -Path $arr if ($results -contains $true) { $true } else { $false }
- 要检查所有路径都存在:
内容的提问来源于stack exchange,提问作者Jelphy
相关产品推荐
相关产品推荐

