You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中Get-ChildItem使用\?\UNC长路径前缀结果异常问题

PowerShell中\\?\UNC路径与常规UNC路径使用Get-ChildItem的差异原因及解决方案

问题现象

  • 命令1:Get-ChildItem -Path "\\?\UNC\very\long\path",当目标路径长度小于260字符时,返回0个子项
  • 命令2:Get-ChildItem -Path "\\very\long\path",返回预期的所有子项
  • 仅在命令1的路径末尾添加\*(即Get-ChildItem -Path "\\?\UNC\very\long\path\*")时,结果才与命令2一致

差异原因

这是因为\\?\UNC是Windows原生的长路径语法,它跳过了PowerShell和.NET的路径解析逻辑,直接把路径传给Win32 API处理:

  • 常规UNC路径(\\very\long\path)下,Get-ChildItem默认会自动解析为“获取该目录下的所有子项”,相当于隐含了查询目录内容的逻辑
  • 但用\\?\UNC前缀的路径时,Win32 API会把这个路径当成精确指向的目录本身,而不是要查询它的内容。这时候Get-ChildItem只会确认目录存在,不会主动枚举子项,所以返回0个结果
  • 加上\*之后,路径明确表示“查询该目录下的所有内容”,Win32 API就会正确枚举目录里的子项,结果自然和常规路径一致

解决方案建议

既然你必须用\\?\UNC前缀处理可变长度的路径,建议统一在路径末尾加\*通配符:

  • 对\\?\UNC格式的路径:加\*能保证Get-ChildItem不管路径长度是否超260字符,都能正确枚举子项
  • 对常规UNC路径:加\*也不会影响结果(常规路径本身就有这个隐含逻辑),统一添加可以让两种格式的命令行为保持一致,避免因路径格式不同出问题

内容的提问来源于stack exchange,提问作者toscanelli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 01:57:35