我有一个格式化的闪存驱动器,因此驱动器上的卷标是“PHILIP”。
我正在使用Get-PSDrive H -PSProvider FileSystem
来确定驱动器是否已插入,但我真的想确定驱动器是否已通过卷标插入,即Get-PSDrive -VolumeLabel PHILIP -PSProvider FileSystem
。当然,VolumeLabel
参数不存在,因此不起作用。
有没有办法按卷名列出计算机中的驱动器?
答案 0 :(得分:6)
我猜你可以使用WMI:
Get-WMIObject Win32_Volume | ? { $_.Label -eq 'PHILIP' }
答案 1 :(得分:4)
您也可以使用.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" }
答案 2 :(得分:0)
我像乔伊建议的那样使用Get-WMIObject。 要将wmi结果链接到例如get-partition,我使用caption参数。 在此示例中,我将卷Philip的分区号设置为D
$ datavolume = Get-WMIObject Win32_Volume | ? {$ _。Label -eq'PHILIP'}
$ datavolume = $ datavolume.Caption
获取分区-DiskNumber 0 |其中{$ _。accesspaths -like“ $ datavolume ”} |设置分区-NewDriveLetter D