rav*_*nth 22
在PowerShell杂志上,我们举办了一场脑筋急转弯比赛,以找出问题的最短答案.检查一下:
http://www.powershellmagazine.com/2012/01/12/find-an-unused-drive-letter/
有几个答案,但这是我最喜欢的答案:
ls function:[d-z]: -n | ?{ !(test-path $_) } | random
Run Code Online (Sandbox Code Playgroud)
我的两分钱:
get-wmiobject win32_logicaldisk | select -expand DeviceID -Last 1 |
% { [char]([int][char]$_[0] + 1) + $_[1] }
Run Code Online (Sandbox Code Playgroud)
有效范围[CHAR]为68..90,如果[char]$_[0] -gt 90避免意外结果,则添加检查。如果某个单元是映射的网络驱动器,它总是返回主要的连续驱动器,例如:
c: system drive
d: cd/dvd
r: network mapped drive
Run Code Online (Sandbox Code Playgroud)
命令返回s:而不是e:作为 [string]
这给出了第一个免费驱动器号(有点难看......有人可以做得更好 IMO):
$l = get-wmiobject win32_logicaldisk | select -expand DeviceID | % { $_[0] }
$s = [int][char]$l[0]
foreach ( $let in $l )
{
if ([int][char]$let -ne $s)
{
$ret = [char]$s +":"
break
}
$s+=1
}
$ret
Run Code Online (Sandbox Code Playgroud)
小智 5
我喜欢这种方式,原因如下:
它找到第一个未使用的驱动器号并映射它,然后就完成了。
$share="\\Server\Share"
$drvlist=(Get-PSDrive -PSProvider filesystem).Name
Foreach ($drvletter in "DEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray()) {
If ($drvlist -notcontains $drvletter) {
$drv=New-PSDrive -PSProvider filesystem -Name $drvletter -Root $share
break
}
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
14860 次 |
| 最近记录: |