我试图找出一个Powershell命令,它允许我捕获插入计算机的唯一USB驱动器的驱动器号,然后能够回忆起这样的变量:
dir %usbdrive%
我已使用此命令显示唯一的USB驱动器的统计信息:
Get-WmiObject Win32_Volume -Filter "DriveType='2'"
但是,如何将驱动器号存储在变量中,或者只是将驱动器号更改为完全不同的字母,例如" T"?
答案 0 :(得分:1)
存储驱动器号很简单,您将结果传递给Select -ExpandProperty DriveLetter
,这在PowerShell中非常基本,您可以将该命令的结果分配给变量,如:
$USBDrive = Get-WmiObject Win32_Volume -Filter "DriveType='2'"|select -expand driveletter
现在,它确实包含一个尾部冒号,因此您可能希望将其修剪为:
$USBDrive = $USBDrive.Trim(":")
那只会让你只有驱动器的字母。更改已知驱动器的驱动器号是另一回事。如果您真的想进入,请告诉我们,或者可能更好地发布一个新问题,询问如何更改驱动器号。
答案 1 :(得分:1)
获取驱动器号的最简单方法是深入查看" DriveLetter"属性。 这是[String],因此您可以使用Substring方法仅提取第一个字符:
$USBDrive = (Get-WmiObject Win32_Volume -Filter "DriveType='2'").DriveLetter.Substring(0,1)
注意:这仅在您只有一个USB驱动器时才有效。在现实生活中,你应该经常检查:
$USBDrives = Get-WmiObject Win32_Volume -Filter "DriveType='2'"
if ($USBDrives -is [system.array]){
$USBDrive = $USBDrives[0].DriveLetter.Substring(0,1)
}else{
$USBDrive = $USBDrives.DriveLetter.Substring(0,1)
}
要回答问题的第二部分,您可以使用Set-WmiInstance命令更改USB驱动器的驱动器号(和其他属性)。
$USBDrives = Get-WmiObject Win32_Volume -Filter "DriveType='2'"
if ($USBDrives -is [system.array]){
$USBDriveLetter = $USBDrives[0].DriveLetter
}else{
$USBDriveLetter = $USBDrives.DriveLetter
}
$USBDrive = Get-WmiObject win32_volume -Filter "DriveLetter = '$USBDriveLetter'"
Set-WmiInstance -InputObject $USBDrive -Arguments @{DriveLetter = "F:";Label = "Test"}
答案 2 :(得分:0)
我觉得你并没有真正努力解决这个问题。首先看一下第一个命令的输出?查看我自己机器的截断输出。
....
DirtyBitSet : True
DriveLetter : H:
DriveType : 2
....
知道您正在寻找的答案是提取属性DriveLetter
。以下将返回“H:”。我使用Select-Object -First 1
来保证只返回一个对象。
Get-WmiObject Win32_Volume -Filter "DriveType='2'" | Select-Object -First 1 -ExpandProperty Driveletter
至于第二部分,一个好的TechNet blog已经有了答案:
$drive = Get-WmiObject Win32_Volume -Filter "DriveType='2'" | Select-Object -First 1
Set-WmiInstance -input $drive -Arguments @{DriveLetter="Q:"; Label="New Label"}