【发布时间】:2015-08-24 12:51:43
【问题描述】:
假设我有这个文件:
C:\[foo]\bar
然后我运行这些 PowerShell 命令:
$path = 'C:\[foo]'
get-childitem -literalpath $path
一切正常,get-childitem 显示文件bar,然后立即返回。
现在我添加-recurse 选项:
$path = 'C:\[foo]'
get-childitem -literalpath $path -recurse
get-childitem 不再显示文件bar。此外,该 cmdlet 运行时间较长,并针对C:\Windows 下的文件夹显示各种“权限被拒绝”错误消息,显然是因为它扫描了整个 C: 盘。
问题与文件夹 [bar] 的名称中包含括号有关。如果我将文件夹重命名为bar,即不带括号,则递归结果将按预期工作。
我的主要问题:如何说服 get-childitem 递归扫描名称中包含方括号(或其他特殊字符)的文件夹?
第二个问题:这是一个已知的错误吗?
环境:Windows 8.1、PowerShell 4.0。
编辑:我验证了在 PowerShell 2.0(在 Windows 7 机器上)get-childitem 在有或没有 -recurse 的情况下返回相同的结果。看来行为在 3.0 或 4.0 版本中发生了变化。
【问题讨论】:
-
将此报告为错误,see here。如果您认为应该解决此问题,请投票。
标签: powershell