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

PS7.2带UNC长路径前缀执行Get-ChildItem返回C盘内容问题咨询

问题判定

这是PowerShell 7.2版本的已知路径解析Bug,并非命令使用错误。

  • PS7重构了跨平台路径处理逻辑后,对Windows平台专用的Win32文件命名空间前缀\\?\(对应UNC场景的\\?\UNC\前缀)存在解析逻辑漏洞:传入带该前缀的UNC路径时,解析模块会错误丢弃前缀后的服务器名、共享名段,最终将路径根定位到当前系统盘(通常为C盘)根目录,这就是执行命令后返回C盘内容的直接原因。
  • 移除\\?\UNC\前缀后触发PathTooLongException是独立问题:PS7在Windows平台默认不会自动绕过传统260字符路径长度限制,未加命名空间前缀的长路径会直接被系统拦截报错。
可用解决方案
  • 方案一(推荐):升级PowerShell到7.3.4及以上稳定版本。该\\?\UNC\前缀解析Bug已经在7.3.x系列的补丁更新中修复,升级后带前缀的长UNC路径可被正常识别,不会再出现错误跳转C盘的问题。
  • 方案二:开启系统级Windows长路径支持,无需手动添加\\?\前缀即可访问长路径:
    1. 执行以下命令修改注册表开启长路径支持(需管理员权限):
      Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1 -Type DWord
      
    2. 重启PowerShell终端后,直接使用原始UNC路径\\myserver\Dados01\Marketing执行Get-ChildItem即可,既不会触发路径过长异常,也不会出现路径解析错误。
  • 方案三(临时适配,无需升级或修改系统配置):通过New-PSDrive将目标UNC路径映射为临时PowerShell驱动器,绕开路径长度检测和前缀解析逻辑:
    # 映射目标UNC路径到M盘
    New-PSDrive -Name M -PSProvider FileSystem -Root '\\myserver\Dados01\Marketing'
    # 直接访问映射后的驱动器路径
    Get-ChildItem -LiteralPath M:
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:12:17