PowerShell 5.1中\\?\前缀的Win32文件命名空间行为异常
PowerShell 5.1 使用
\\?\长路径前缀时的间歇性异常问题 我们在使用\\?\前缀处理长路径时遇到了极不稳定的行为,根据Win32文件命名空间规范,该前缀的使用语法是正确的。
针对同一个C:\Users文件夹,执行相关命令时表现完全不一致:
- 执行
Get-Item -Path '\\?\C:\Users':偶尔无输出也无报错 - 执行
Get-Item -LiteralPath '\\?\C:\Users':偶尔报错“Get-Item : Illegal characters in path.” - 去掉前缀执行
Get-Item -Path 'C:\Users':始终正常返回正确的文件元数据
另外,打开新的PowerShell窗口后重新运行Get-Item -Path '\\?\C:\Users',又能正常工作。
补充测试情况
运行以下批量测试脚本时,发现只有少数几次能正确返回C:\Users的元数据,其余多数情况下都会抛出“Illegal characters in path.”错误:
0..20 | ForEach-Object { Start-Job { Get-Item -LiteralPath '\\?\C:\Users' } } Get-Job | Wait-Job Get-Job | Receive-Job
由于问题是间歇性出现的,我们陷入了排查困境。请问有没有方法可以检查Win32文件命名空间相关库是否已正确加载?我们使用的是PowerShell 5.1版本。
内容的提问来源于stack exchange,提问作者DarkLite1
相关产品推荐
相关产品推荐

