windows - 如何在 powershell 中正确格式化此对象?
问题描述
我正在尝试创建一个对象,其中包含有关所有驱动器的信息,如下所示:
[
{"letter": "C:", "volumeName": "Disk C", "brand": "INTEL ModelName", "mediaType" : "Fixed hard disk media"},
{"letter": "D:", "volumeName": "Disk D", "brand": "Seagate ModelName", "mediaType" : "Fixed hard disk media"},
]
但是以下 powershell 命令不仅会产生格式错误的结果,而且还会为第一个磁盘的每个属性生成一个对象,而不是将每个磁盘的所有属性都放在一个对象中:
% {New-Object PSObject -Property @{'caption' =$(wmic logicaldisk get caption $_); 'volumeName' =$(wmic logicaldisk get VolumeName $_); 'brand' =$(wmic diskdrive get caption $_); 'format' =$(wmic diskdrive get mediaType $_);}} | format-list
解决方案
您可以Get-WmiObject win32_logicaldisk
直接使用而不是使用 wmic 来获取它:
Get-WmiObject win32_logicaldisk | select `
@{N="letter";E={$_.deviceId}},
@{N="volumeName";E={$_.VolumeName}},
@{N="brand";E={$_.deviceId}},
@{N="mediaType";E={$_.Description}}
结果:
letter volumeName brand mediaType
------ ---------- ----- ---------
A: A: 3 1/2 Inch Floppy Drive
C: C: Local Fixed Disk
D: OST D: Local Fixed Disk
K: DATA K: CD-ROM Disc