Я хочу получить букву диска из VolumeID / VolumeIndex / PartitionID / PartitionIndex
Я нашел кусочки, но это Получить номер диска из метки
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
::Get disk number from label
IF "%1."=="." ECHO Missing or Wrong Parameter&GOTO :EOF
SET MyDisk=
SET Mylabel=%1
FOR /F "delims=" %%A IN ('Echo List Volume^|Diskpart^|FIND /I "%Mylabel%"') DO SET Myvol=%%A
IF NOT DEFINED Myvol ECHO ERROR: NO LABEL FOUND&GOTO :EOF
FOR /F "tokens=1 delims=0123456789" %%A IN ("%Myvol%") DO SET /A Myvol=!Myvol:%%A=! 2>nul
FOR /F "delims=" %%A IN ('
^(
ECHO Sel Vol %MyVol%^&ECHO det vol
^)^|diskpart^|FIND "*"
') DO SET Mydisk=%%A
IF NOT DEFINED Mydisk ECHO ERROR: NO DISK NUMBER FOUND&GOTO :EOF
FOR /F "tokens=1 delims=0123456789" %%A IN ("%MyDisk%") DO SET /A Mydisk=!Mydisk:%%A=! 2>nul
ECHO Volume with label %Mylabel% is on DISK %MyDisk% and it is Volume #%Myvol%
Это другие части, который будет PowerShell, а не CMD. Соотнесите идентификатор физического устройства с идентификатором устройства тома
Get-WmiObject Win32_DiskDrive | ForEach-Object {
$disk = $_
$partitions = "ASSOCIATORS OF " +
"{Win32_DiskDrive.DeviceID='$($disk.DeviceID)'} " +
"WHERE AssocClass = Win32_DiskDriveToDiskPartition"
Get-WmiObject -Query $partitions | ForEach-Object {
$partition = $_
$drives = "ASSOCIATORS OF " +
"{Win32_DiskPartition.DeviceID='$($partition.DeviceID)'} " +
"WHERE AssocClass = Win32_LogicalDiskToPartition"
Get-WmiObject -Query $drives | ForEach-Object {
$driveLetter = $_.DeviceID
$fltr = "DriveLetter='$driveLetter'"
New-Object -Type PSCustomObject -Property @{
Disk = $disk.DeviceID
DriveLetter = $driveLetter
VolumeName = $_.VolumeName
VolumeID = Get-WmiObject -Class Win32_Volume -Filter $fltr |
Select-Object -Expand DeviceID
}
}
}
}
[void][System.Console]::ReadKey($true)
Кто-нибудь, помогите мне.Спасибо.