PowerShell获取可移动驱动器列表无输出,请求排查错误原因
问题分析与修正方案
你的代码主要有两个错误导致无输出:
- DriveType 判断错误:
Get-Volume返回的DriveType是枚举类型,可移动驱动器对应的枚举值是整数2,而非字符串'2';你也可以直接使用枚举名称'Removable',可读性更强。 - DriveLetter 判断逻辑错误:没有驱动器号的卷,
DriveLetter属性值是$null,而非空字符 "0",所以应该判断$_.DriveLetter -ne $null`。
修正后的代码(两种写法可选)
写法1:使用枚举值数字判断
$listDrives = Get-Volume | Where-Object {$_.DriveLetter -ne $null -and $_.DriveType -eq 2} | Select-Object DriveLetter, DriveType Write-Output $listDrives
写法2:使用枚举名称判断(更直观)
$listDrives = Get-Volume | Where-Object {$_.DriveLetter -ne $null -and $_.DriveType -eq 'Removable'} | Select-Object DriveLetter, DriveType Write-Output $listDrives
补充说明
建议先通过 Where-Object 过滤再执行 Select-Object,这样能减少后续处理的数据量,提升效率。插入U盘后运行修正后的代码,就能正确列出所有带驱动器号的可移动驱动器了。
内容的提问来源于stack exchange,提问作者DevFox
相关产品推荐
相关产品推荐

