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

为何PowerShell中System.IO.DirectoryInfo处理UNC路径不符合预期?

PowerShell Core 7.3中[System.IO.DirectoryInfo]处理UNC路径的行为异常原因

问题重现

本地路径正常行为

$dir = [System.IO.DirectoryInfo]'c:\deploy'
$dir.BaseName # 返回 'deploy'
$dir.Name # 返回 'deploy'
$dir.Parent.Name # 返回 'c:\'

UNC路径异常行为

$target = [System.IO.DirectoryInfo]'\\sharedhost\Deploy'
$target.Name # 返回 '\\sharedhost\Deploy'
$target.BaseName # 返回 '\\sharedhost\Deploy'
$target.Parent # 返回 $null

用户期望$target.Parent指向sharedhost,但实际返回null,且不想通过映射驱动器解决。

异常原因

这是.NET底层对UNC路径的设计逻辑导致的:

  • \\sharedhost\Deploy属于UNC共享根目录,也就是网络共享资源的顶级节点。在.NET的文件系统抽象中,这类路径没有父目录,所以Parent属性返回null。这和本地驱动器根目录(如c:\)的逻辑不同——本地驱动器根是操作系统层面的容器,而UNC共享根是网络共享的起点,不存在更上层的目录结构。
  • 对于UNC共享根目录,DirectoryInfo的Name和BaseName属性会返回完整的共享路径,而非单独的共享名Deploy。因为在.NET的设计中,整个共享路径就是这个目录的标识,没有更上层目录可以拆分出单独的名称部分。

如果需要提取主机名或共享名,可以手动解析UNC路径字符串,示例:

$uncPath = '\\sharedhost\Deploy'
$hostName = ($uncPath -split '\\')[2]
$shareName = ($uncPath -split '\\')[3]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:00:58