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
我有两个路径存储在变量中,我 运行 通过 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