背景:参考https://cloud.tencent.com/developer/article/2475831,对mbr转gpt,还要不丢数据,在操作之前先做快照,并记录机器和磁盘的对应关系,以及机器系统内部的disk instanceid、磁盘序号、盘符的对应关系。
一句话命令只能显示disk instanceid、磁盘序号,研究了下没有直接的命令可以一键三连输出disk instanceid、磁盘序号、盘符,只能用powershell代码段来搞,分享如下:
# 获取所有磁盘驱动器的信息
$diskDrives = Get-WmiObject -Class Win32_DiskDrive
# 按DeviceID排序磁盘驱动器
$diskDrives = $diskDrives | Sort-Object { [int]($_.DeviceID -replace '^\\\\\.\\PHYSICALDRIVE', '') }
# 遍历所有磁盘驱动器
foreach ($diskDrive in $diskDrives) {
# 获取DeviceID并切分
$deviceID = $diskDrive.DeviceID
$driveNumber = $deviceID -replace '^\\\\\.\\PHysICALDRIVE', ''
$serialNumber = $diskDrive.SerialNumber
Write-Output "Disk: $deviceID"
Write-Output "Number: $driveNumber"
Write-Output "Serial Number: $serialNumber"
# 获取与磁盘$diskDrive关联的所有分区
$partitions = $diskDrive.GetRelated('Win32_DiskPartition')
# 遍历每个分区并获取关联的逻辑磁盘
foreach ($partition in $partitions) {
# 获取与分区关联的所有逻辑磁盘
$logicalDisks = $partition.GetRelated('Win32_LogicalDisk')
# 输出逻辑磁盘的盘符
if ($logicalDisks) {
$logicalDisks | Select-Object -ExpandProperty DeviceID
}
}
Write-Output ""
}
效果如下
再深化下代码,把每个盘符的freesize、size显示一下
# 获取所有磁盘驱动器的信息
$diskDrives = Get-WmiObject -Class Win32_DiskDrive
# 按DeviceID排序磁盘驱动器
$diskDrives = $diskDrives | Sort-Object { [int]($_.DeviceID -replace '^\\\\\.\\PHYSICALDRIVE', '') }
# 遍历所有磁盘驱动器
foreach ($diskDrive in $diskDrives) {
# 获取DeviceID并切分
$deviceID = $diskDrive.DeviceID
$driveNumber = $deviceID -replace '^\\\\\.\\PHysICALDRIVE', ''
$serialNumber = $diskDrive.SerialNumber
Write-Output "Disk: $deviceID"
Write-Output "Number: $driveNumber"
Write-Output "Serial Number: $serialNumber"
# 获取与磁盘$diskDrive关联的所有分区
$partitions = $diskDrive.GetRelated('Win32_DiskPartition')
# 遍历每个分区并获取关联的逻辑磁盘
foreach ($partition in $partitions) {
# 获取与分区关联的所有逻辑磁盘
$logicalDisks = $partition.GetRelated('Win32_LogicalDisk')
# 输出逻辑磁盘的盘符
if ($logicalDisks) {
$volumeIDs = $logicalDisks | Select-Object -ExpandProperty DeviceID
foreach ($volumeID in $volumeIDs) {
Get-Volume | Where-Object { $_.DriveType -eq "Fixed" -and $_.DriveLetter -match $volumeID.split(":")[0] } | Format-Table -AutoSize
}
}
}
Write-Output ""
}
$driveInfo1 =Get-Volume | Where-Object { $_.DriveType -eq "Fixed" -and $_.DriveLetter -match "[A-Z]" } | Sort-Object DriveLetter
$driveInfo2 =Get-PSDrive -PSProvider FileSystem | Where-Object { $_.Free -ge 0 }|ft -auto
$driveInfo1
$driveInfo2
只能显示disk instanceid、磁盘序号的一句话命令也分享如下:
Get-Disk |ft SerialNumber,DiskNumber,Size,AllocatedSize,FriendlyName,IsBoot,IsOffline,IsReadOnly,Location,NumberOfPartitions -AutoSize
Get-PhysicalDisk |ft SerialNumber,FriendlyName,PhysicalLocation,AllocatedSize,Size -AutoSize
wmic diskdrive get caption,deviceid,serialnumber
wmic path win32_physicalmedia get SerialNumber,Tag
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。