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

时间:2016-06-15 20:06:58

标签: powershell error-handling get-childitem

我有两个路径存储在变量中,我通过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输出时,它与我在命令行运行命令时发现的内容一致。

Windows 7 sp1上的Powershell版本为4.0。

1 个答案:

答案 0 :(得分:1)

为了让-recurse开关像你想要的那样工作,它需要知道folder1和folder2是目录。像这样设置你的变量:

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

它应该返回正确的错误。

-recurse在c:\ testing中搜索,当完整路径没有反斜杠时,它最终会在folder1上运行,并且在尝试遍历folder1时会被拒绝访问。

命令中的path参数如下:

PS> gci -path $p1 -recurse