1

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

[
  {"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

Обновить

Я попытался использовать эту команду вместо этого:

Get-WMIObject Win32_LogicalDisk | % {New-Object PSObject -Property @{'caption' =$($_.caption); 'volumeName' =$($_.VolumeName); 'brand' =$(); 'format' =$()}} | format-list

что дает мне половину ценностей

caption    : C:
brand      :
format     :
volumeName : SSD

caption    : D:
brand      :
format     :
volumeName : Disk D

caption    : E:
brand      :
format     :
volumeName : Disk e

caption    : F:
brand      :
format     :
volumeName :

1 ответ1

1

Вот рабочий пример того, как вы можете связать диски с томами, используя разделы диска. Дело в том, что тома не связаны напрямую с дисками, а только через разделы

Get-WmiObject Win32_DiskDrive | 
Select-Object DeviceID, Model, MediaType |
ForEach-Object { 
    $o = $_
    Get-WmiObject -Query "ASSOCIATORS OF {Win32_DiskDrive.DeviceID=`"$($_.DeviceID.replace('\','\\'))`"} WHERE AssocClass = Win32_DiskDriveToDiskPartition" |
    Select-Object @{ N='Model'; E={$o.Model} }, 
                  @{ N='MediaType'; E={$o.MediaType} }, 
                  DeviceID
} |
ForEach-Object {
    $o2 = $_
    Get-WmiObject -Query "ASSOCIATORS OF {Win32_DiskPartition.DeviceID=`"$($_.DeviceID)`"} WHERE AssocClass = Win32_LogicalDiskToPartition" |
    Select-Object @{ N='Letter'; E={$_.Name} }, 
                  VolumeName, 
                  @{ N='MediaType'; E={$o2.MediaType} }, 
                  @{ N='Model'; E={$o2.Model} }
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .