【发布时间】:2021-10-23 06:22:46
【问题描述】:
我正在使用以下命令获取磁盘信息:
get-ciminstance -ClassName Win32_LogicalDisk
问题是,它不包含MediaType 属性(HDD、SSD 或分别为数字形式 4、3)。
我想我需要将它与另一个命令结合(关联),例如:
-
Get-PhysicalDisk或 Get-WmiObject -Class MSFT_PhysicalDisk -Namespace root\Microsoft\Windows\Storage
我从 Node.js 调用这些命令,因此我可以运行单独的命令并在之后组合结果。它不必是 1 个命令。我只是不确定如何关联它们,因为 Powershell API 不一致:
这个返回数字
(Get-WmiObject -Class MSFT_PhysicalDisk -Namespace root\Microsoft\Windows\Storage).DeviceID
这个返回驱动器号
(get-ciminstance -ClassName Win32_LogicalDisk).DeviceID
我在另一个thread 中找到了这段代码,但我不确定如何在其中添加MediaType 属性:
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 {
New-Object -Type PSCustomObject -Property @{
Disk = $disk.DeviceID
DiskSize = $disk.Size
DiskModel = $disk.Model
Partition = $partition.Name
RawSize = $partition.Size
DriveLetter = $_.DeviceID
VolumeName = $_.VolumeName
Size = $_.Size
FreeSpace = $_.FreeSpace
}
}
}
}
【问题讨论】:
-
你确定,这会返回 MediaType 吗?
Get-CimInstance -ClassName Win32_LogicalDisk | Select-Object -Property MediaType -
@jfrmilner 是的,但这是一个错误的 MediaType,它返回一些神奇的数字 12,而不是 3 (SSD) 或 4 (HDD)。
标签: powershell