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

自定义PsDrive文件系统无法获取FileSystemEntries问题求助

解决自定义PsDrive下[System.IO.Directory]::GetFileSystemEntries()路径错误问题

核心解决方案

直接传入$PWD或Get-Location会导致.NET错误解析PowerShell自定义驱动器路径,改用$PWD.ProviderPath获取.NET可识别的原生文件系统路径:

# 获取当前位置的原生路径
$nativePath = $PWD.ProviderPath
# 调用.NET方法获取文件/目录
$fileEntries = [System.IO.Directory]::GetFileSystemEntries($nativePath)

问题原因

$PWD和Get-Location返回的是System.Management.Automation.PathInfo对象,直接转为字符串时会输出PowerShell格式的路径(如Steam:\)。.NET的文件系统API无法识别PowerShell自定义驱动器标识,会将其当作当前系统工作目录的子目录处理,最终生成错误路径(如C:\Users\MyUserName\Steam:)。

特殊场景处理(虚拟自定义PsDrive)

如果自定义PsDrive未映射到本地真实路径,需手动拼接原生路径:

  1. 获取驱动器的根原生路径
  2. 提取当前位置的相对路径
  3. 拼接为.NET可识别的完整路径
# 获取当前驱动器信息
$currentDrive = Get-PSDrive -Name $PWD.Drive.Name
# 假设驱动器根路径对应原生路径(需根据实际配置调整)
$nativeRoot = $currentDrive.Root
# 提取当前位置相对驱动器根的路径
$relativePath = $PWD.Path.Replace("$($currentDrive.Name):\", "")
# 拼接完整原生路径
$nativePath = Join-Path -Path $nativeRoot -ChildPath $relativePath
# 执行.NET方法
$fileEntries = [System.IO.Directory]::GetFileSystemEntries($nativePath)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:19:56