gpt4 book ai didi

powershell - 选项 -recurse 有时不适用于 PowerShell cmdlet get-childitem

转载 作者:行者123 更新时间:2023-12-03 09:57:35 25 4
gpt4 key购买 nike

假设我有这个文件:

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 版中发生了变化。

最佳答案

我在使用 PowerShell 4.0 的 Windows 7 x64 位上也得到与您相同的结果。从它的外观来看,递归功能忽略了 -LiteralPath .

这是一个解决方法,我发现了一个 TechNet post讨论同样的问题。该帖子中的 OP 最终使用了 -Path和双转义括号。

$path = "C:\[foo]"
$escapedPath = $path.Replace("[","``[").Replace("]","``]")
Get-ChildItem -Path $escapedPath -Recurse

注:如果您删除 -Recurse,这将失败。
Get-ChildItem : Cannot find path 'C:\`[foo`]' because it does not exist.

关于powershell - 选项 -recurse 有时不适用于 PowerShell cmdlet get-childitem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32182820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com