Как правильно отформатировать этот объект в powershell? - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь создать объект с информацией обо всех дисках, который выглядит примерно так:

[
  {"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 выдает не только плохо отформатированные результаты, но и объект для каждого свойства1-го диска вместо того, чтобы поместить все свойства каждого диска в объект:

% {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

1 Ответ

0 голосов
/ 29 мая 2018

Вы можете просто получить его с помощью 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
...