none
Win32_DiskDrive несколько дисков, размер в GB RRS feed

  • Вопрос

  • get-WMIObject -Class Win32_DiskDrive | Select-Object Caption, size
    Caption                                         size
    -------                                         ----
    TOSHIBA DT01ACA100                              1000202273280
    Microsoft Storage Space Device                  3994261770240

    как сделать так, чтобы переменная $disk1 присваивала значение TOSHIBA DT01ACA100, а переменная $disk2 - Microsoft Storage Space Device.

    чтобы переменная $size1 - 1000202273280, а $size2 - 3994261770240, и при этом значения были в GB. Пробовал size/1GB, но не подходит. пока нашёл такой вариант:

    PS C:\> $size1 = '1000202273280'
    $size1 = $size1/1GB
    $size1
    931,510956287384

    Спасибо.

    3 марта 2014 г. 15:57
    Модератор

Ответы

Все ответы

  • $disks = get-WMIObject -Class Win32_DiskDrive
    $disk1 = $disks[0].Caption
    $disk2 = $disks[1].Caption
    $size1 = $disks[0].Size / 1GB
    $size2 = $disks[1].Size / 1GB

    Проще использовать:

    Get-WMIObject -Class Win32_DiskDrive | Select-Object Caption, @{n="Size";e={$_.size/1gb}}


    • Изменено KazunEditor 3 марта 2014 г. 16:08
    • Помечено в качестве ответа AnahaymModerator 3 марта 2014 г. 16:18
    3 марта 2014 г. 16:07
    Отвечающий
  • Спасибо! Теперь проще и мне ) когда знаешь )
    3 марта 2014 г. 16:19
    Модератор
  • вопрос появился.
    на некоторых компьютерах установлены кард-ридеры. можно ли как-то исключить из поиска USB диски?

    Get-WMIObject -Class Win32_DiskDrive | fl -Property *
    PNPDeviceID                 : USBSTOR\
    PNPDeviceID                 : SCSI\
    PNPDeviceID                 : STORAGE\
    
    PS C:\> Get-WMIObject -Class Win32_DiskDrive -filter "PNPDeviceID='SCSI\*'"
    Get-WMIObject : Invalid query "select * from Win32_DiskDrive where PNPDeviceID='SCSI\*'"
    At line:1 char:1
    + Get-WMIObject -Class Win32_DiskDrive -filter "PNPDeviceID='SCSI\*'"
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [Get-WmiObject], ManagementException
        + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

    нужно исключить USBSTOR, но у меня даже не получается включить только SCSI (((
    5 марта 2014 г. 16:20
    Модератор
  • Get-WMIObject -Class Win32_DiskDrive -filter "PNPDeviceID Like 'SCSI\\%'"
    6 марта 2014 г. 4:43
    Отвечающий
  • вроде всё просто - поменять ключ like на notlike и получить все диски кто не USBSTOR, но не получается:

    PS C:\> Get-WMIObject Win32_DiskDrive -filter "PNPDeviceID Notlike 'USBSTOR\\%'"
    Get-WMIObject : Invalid query "select * from Win32_DiskDrive where PNPDeviceID Notlike 'USBSTOR\\%'"
    At line:1 char:1
    + Get-WMIObject Win32_DiskDrive -filter "PNPDeviceID Notlike 'USBSTOR\\%'" 
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [Get-WmiObject], ManagementException
        + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

    или Filter не notlike должен быть? где можно почитать про Filter и его параметры, переменные?


    6 марта 2014 г. 12:36
    Модератор
  • Get-WMIObject Win32_DiskDrive -filter "NOT (PNPDeviceID Like 'USBSTOR\\%')"

    http://msdn.microsoft.com/en-us/library/aa394606(v=vs.85).aspx

    • Помечено в качестве ответа AnahaymModerator 6 марта 2014 г. 13:16
    6 марта 2014 г. 12:48
    Отвечающий