无法在名称包含“[”的目录中使用 "ForEach-Object -Parallel"
Unable to use the "ForEach-Object -Parallel" in a directory with a name containing "["
在名称包含“[”的目录中使用 ForEach-Object -Parallel cmdlet 将 return 出现 WildcardPatternException。去掉-Parallel,会运行成功。
我创建了一些目录和 运行 以下命令。
1..5 | ForEach-Object -Parallel {Write-Host $_}
每个 [=30= 的差异 return ]目录如下
PS D:\[example> 1..5 | ForEach-Object -Parallel {Write-Host $_}
WildcardPatternException will be returned.
PS D:\[]example> 1..5 | ForEach-Object -Parallel {Write-Host $_}
PS D:\[ex]ample> 1..5 | ForEach-Object -Parallel {Write-Host $_}
ItemNotFoundException will be returned.
PS D:\[e]xample> 1..5 | ForEach-Object -Parallel {Write-Host $_}
PS D:\]example> 1..5 | ForEach-Object -Parallel {Write-Host $_}
Ran successfully and 5 values are returned.
有没有不用重命名目录就能解决这个问题的方法?
如评论中所述,这是一个错误。
ForEach-Object -Parallel
通过称为 TaskPool
的东西将脚本块的执行卸载到多个后台运行空间。
为了模拟调用者环境,PowerShell 将后台运行空间配置为类似于默认运行空间,包括将当前提供程序位置设置为调用者所在的位置。
不幸的是,设置当前位置的内部API默认为扩展通配符,相当于默认为:
Set-Location -Path 'D:\[]example'
而不是
Set-Location -LiteralPath 'D:\[]example'
现在已经修补(都用于 ForEach-Object -Parallel
and Start-PSThreadJob
),预计这两个都将在今年晚些时候与 7.1 版一起发布
在名称包含“[”的目录中使用 ForEach-Object -Parallel cmdlet 将 return 出现 WildcardPatternException。去掉-Parallel,会运行成功。
我创建了一些目录和 运行 以下命令。1..5 | ForEach-Object -Parallel {Write-Host $_}
每个 [=30= 的差异 return ]目录如下
PS D:\[example> 1..5 | ForEach-Object -Parallel {Write-Host $_}
WildcardPatternException will be returned.
PS D:\[]example> 1..5 | ForEach-Object -Parallel {Write-Host $_} PS D:\[ex]ample> 1..5 | ForEach-Object -Parallel {Write-Host $_}
ItemNotFoundException will be returned.
PS D:\[e]xample> 1..5 | ForEach-Object -Parallel {Write-Host $_} PS D:\]example> 1..5 | ForEach-Object -Parallel {Write-Host $_}
Ran successfully and 5 values are returned.
有没有不用重命名目录就能解决这个问题的方法?
如评论中所述,这是一个错误。
ForEach-Object -Parallel
通过称为 TaskPool
的东西将脚本块的执行卸载到多个后台运行空间。
为了模拟调用者环境,PowerShell 将后台运行空间配置为类似于默认运行空间,包括将当前提供程序位置设置为调用者所在的位置。
不幸的是,设置当前位置的内部API默认为扩展通配符,相当于默认为:
Set-Location -Path 'D:\[]example'
而不是
Set-Location -LiteralPath 'D:\[]example'
现在已经修补(都用于 ForEach-Object -Parallel
and Start-PSThreadJob
),预计这两个都将在今年晚些时候与 7.1 版一起发布