Powershell gci-递归命令返回错误错误

Powershell gci-递归命令返回错误错误,powershell,error-handling,get-childitem,Powershell,Error Handling,Get Childitem,我有两个存储在变量中的路径,我通过gci命令来检查访问,有点像这样: $p1 = c:\testing\folder1 #path is access denied $p2 = c:\testing\folder2 #path doesn't exist $p1 = "c:\testing\folder1\" #path is access denied $p2 = "c:\testing\folder2\" #path doesn't exist 注意:错误是故意的,因为我试图在脚本中测试

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

$p1 = c:\testing\folder1 #path is access denied
$p2 = c:\testing\folder2 #path doesn't exist
$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
有人知道为什么会这样吗

起初我认为将path变量输入到函数中是个问题,但我观察了这些变量,发现它们发生了相应的变化。上面的示例与我在脚本外部的powershell命令提示符下尝试的完全相同(当然,错误文本被简化了……但您得到了要点)

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


Powershell版本在Windows 7 sp1上是4.0。

要使-recurse开关正常工作,它需要知道folder1和folder2是目录。如下所示设置变量:

$p1 = c:\testing\folder1 #path is access denied
$p2 = c:\testing\folder2 #path doesn't exist
$p1 = "c:\testing\folder1\" #path is access denied
$p2 = "c:\testing\folder2\" #path doesn't exist
它应该返回正确的错误

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

另外,命令中的路径参数如下所示:

PS> gci -path $p1 -recurse

$p1=c:\testing\folder1
应该是
$p1='c:\testing\folder1'
,否则
c:\testing\folder1:术语'c:\testing\folder1'不会被识别为…
错误的名称。不同意。
-recurse
开关在每种情况下(文件或文件夹)都能正常工作:获取指定位置中的项以及这些位置的所有子项。我不想与您争辩,@JosefZ--当指定路径不存在时,它似乎有非常奇怪和不一致的行为。如果尾随的反斜杠不存在,并且目录不存在,它似乎会搜索父目录,这可以从所花的时间和返回的各种错误(当它继续运行时)来证明。我认为这是正确的,即使没有找到
文件
-也会引发类似错误(与
dir/s
相反)。谢谢@TonyHinkle,添加尾部反斜杠正是我需要它做的。