5

我有一个我格式化的闪存驱动器,因此驱动器上的卷标是“PHILIP”。

在此处输入图像描述

Get-PSDrive H -PSProvider FileSystem用来确定驱动器是否已插入,但是我真的很想确定驱动器是否通过卷标插入,即Get-PSDrive -VolumeLabel PHILIP -PSProvider FileSystem. 当然VolumeLabel参数不存在所以这不起作用。

有没有办法按卷名列出计算机中的驱动器?

4

3 回答 3

8

You can use WMI, I guess:

Get-WMIObject Win32_Volume | ? { $_.Label -eq 'PHILIP' }
于 2012-10-12T19:42:13.353 回答
5

您也可以使用 .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-Objectcmdlet(两者?都是Where别名),以将其过滤到您正在寻找的卷:

PS> [System.IO.DriveInfo]::GetDrives() | ? {$_.VolumeLabel -eq "PHILIP" }
于 2012-10-12T20:29:09.763 回答
1

我像 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

于 2019-12-20T12:49:25.160 回答