首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在名为"[“的目录中使用"ForEach-Object -Parallel”

无法在名为"[“的目录中使用"ForEach-Object -Parallel”
EN

Stack Overflow用户
提问于 2020-04-22 16:12:42
回答 1查看 145关注 0票数 3

在名为"[“的目录中使用ForEach-Object -Parallel cmdlet将返回一个WildcardPatternException。删除-Parallel,它将成功运行。

我创建了几个目录并运行了以下命令。

1..5 | ForEach-Object -Parallel {Write-Host $_}

每个ran目录返回的差异如下所示。

PS D:[example> 1.5\x{Host Object -Parallel {写-主机$_} ]

WildcardPatternException将被退回。

PS D:[]example> 1.5 ForEach对象-Parallel {写-主机$_} PS D:[ex]ample> 1.5{ ForEach-Object -Parallel {写-宿主$_}

ItemNotFoundException将被退回。

PS D:[e]xample> 1.5{ForEach对象-Parallel {写-主机$_} PS D:]example> 1.5回ForEach对象-Parallel {写-宿主$_}

成功运行,并返回5个值。

是否有一种无需重命名目录即可解决此问题的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-18 15:57:51

正如注释中提到的,这是一个bug。

ForEach-Object -Parallel的工作方式是通过TaskPool将脚本块的执行卸载到多个后台运行空间。

为了模拟调用者环境,PowerShell将后台运行空间配置为类似于默认运行空间,包括将当前提供程序授权设置为任何调用方。

不幸的是,用于设置当前位置的内部API默认为展开通配符,相当于默认为:

代码语言:javascript
复制
Set-Location -Path 'D:\[]example'

而不是

代码语言:javascript
复制
Set-Location -LiteralPath 'D:\[]example'

这已经修补好了(包括ForEach-Object -ParallelStart-PSThreadJob),预计今年晚些时候两者都会附带7.1版本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61369862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档