Powershell gci -recurse 命令返回错误错误

Powershell gci -recurse command returning wrong error

我有两个路径存储在变量中,我 运行 通过 gci 命令检查访问,有点像这样:

$p1 = c:\testing\folder1 #path is access denied
$p2 = c:\testing\folder2 #path doesn't exist

注意:错误是故意的,因为我正在尝试在脚本中测试我的错误处理

如果我运行他们通过如下命令,我得到相应的错误:

gci $p1
error: access denied c:\testing\folder1
gci $p2
error: file doesn't exist c:\testing\folder2
gci -recurse $p1
error: access denied c:\testing\folder1
gci -recurse $p2
error: access denied c:\testing\folder1

有人知道为什么会发生这种情况吗?

起初我以为是将路径变量输入我的函数时出现问题,但我观察了这些变量并且它们发生了适当的变化。上面的示例与我在脚本外的 powershell 命令提示符处尝试的完全一样(当然错误文本已简化......但你明白了要点)。

当我在我的脚本中 运行 并检查 $error 输出时,它与我在命令行 运行 命令时发现的结果一致。

Powershell 版本是 4.0 Windows 7 sp1。

要使 -recurse 开关像您希望的那样工作,它需要知道 folder1 和 folder2 是目录。像这样设置变量:

$p1 = "c:\testing\folder1\" #path is access denied
$p2 = "c:\testing\folder2\" #path doesn't exist

它应该 return 正确的错误。

-recurse 在 c:\testing 中搜索,当完整路径没有尾随反斜杠时,它最终在 运行 跨文件夹 1,并且它在尝试遍历文件夹 1 时被拒绝访问。

还有命令中的路径参数如下:

PS> gci -path $p1 -recurse