我有一个我格式化的闪存驱动器,因此驱动器上的卷标是“PHILIP”。
我Get-PSDrive H -PSProvider FileSystem
用来确定驱动器是否已插入,但是我真的很想确定驱动器是否通过卷标插入,即Get-PSDrive -VolumeLabel PHILIP -PSProvider FileSystem
. 当然VolumeLabel
参数不存在所以这不起作用。
有没有办法按卷名列出计算机中的驱动器?
我有一个我格式化的闪存驱动器,因此驱动器上的卷标是“PHILIP”。
我Get-PSDrive H -PSProvider FileSystem
用来确定驱动器是否已插入,但是我真的很想确定驱动器是否通过卷标插入,即Get-PSDrive -VolumeLabel PHILIP -PSProvider FileSystem
. 当然VolumeLabel
参数不存在所以这不起作用。
有没有办法按卷名列出计算机中的驱动器?
You can use WMI, I guess:
Get-WMIObject Win32_Volume | ? { $_.Label -eq 'PHILIP' }
您也可以使用 .NET 框架中的DriveInfo类:
PS> [System.IO.DriveInfo]::GetDrives()
Name : C:\
DriveType : Fixed
DriveFormat : NTFS
IsReady : True
AvailableFreeSpace : 217269202944
TotalFreeSpace : 217269202944
TotalSize : 320070479872
RootDirectory : C:\
VolumeLabel : OS
然后,您可以将其通过管道传输到Where-Object
cmdlet(两者?
都是Where
别名),以将其过滤到您正在寻找的卷:
PS> [System.IO.DriveInfo]::GetDrives() | ? {$_.VolumeLabel -eq "PHILIP" }
我像 Joey 建议的那样使用 Get-WMIObject。要将 wmi 结果链接到例如 get-partition 我使用标题参数。在这个例子中,我将卷 Philip 的分区号设置为 D
$datavolume=Get-WMIObject Win32_Volume | ? { $_.Label -eq 'PHILIP' }
$datavolume=$datavolume.Caption
获取分区-DiskNumber 0 | 其中 {$_.accesspaths -like " $ datavolume "} | 设置分区-NewDriveLetter D