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

如何用PowerShell获取当前未使用的驱动器盘符

在PowerShell中获取未使用的驱动器盘符

你不需要依赖反向正则来实现需求,直接通过集合操作或简单过滤就能高效得到未使用的盘符,以下是两种实用方法:

方法一:基础过滤法

先生成A-Z的完整盘符列表,再排除已使用的盘符:

# 生成A到Z的所有盘符(字符数组)
$allDrives = [char[]]('A'..'Z')

# 获取当前已使用的盘符(统一转成大写,避免大小写不匹配)
$drives_in_use = (Get-PSDrive).Name -match '^[A-Za-z]$' | ForEach-Object { $_.ToUpper() }

# 筛选出未被使用的盘符
$availableDrives = $allDrives | Where-Object { $_ -notin $drives_in_use }

# 输出结果
Write-Host "可用盘符:$availableDrives"

方法二:集合差集法(效率更高)

利用.NET集合的ExceptWith方法直接计算差集,适合处理大量数据场景:

# 生成A到Z的盘符集合
$allDrivesSet = [System.Collections.Generic.HashSet[char]]('A'..'Z')

# 获取已使用盘符并转成集合
$usedDrivesSet = [System.Collections.Generic.HashSet[string]]((Get-PSDrive).Name -match '^[A-Za-z]$' | ForEach-Object { $_.ToUpper() })

# 计算差集(从全集里移除已使用的盘符)
$allDrivesSet.ExceptWith($usedDrivesSet)

# 排序后输出结果
$availableDrives = $allDrivesSet | Sort-Object
Write-Host "可用盘符:$availableDrives"

为什么不推荐反向正则?

反向正则需要动态生成排除规则(比如已用盘符是C、D、F,就要写[^CDF]),但已用盘符是动态变化的,生成这类正则反而繁琐,不如直接通过集合操作直观、易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:48:23