none
PoSh: Как получить номера локальных дисков как в консоли disk management? RRS feed

  • Вопрос

  • В My Comp - Manage - Disk management диски перечислены под номерами 0,1 ... как получить эти номера через POSh? Либо любой утилитой (чотбы отпарсерить).
    В идеале еще + номер SCSI порта диска.
    7 декабря 2009 г. 8:02

Ответы

  • Я так понял, что именно физические диски? Не разделы. Тогда  с помощью diskpart:

    #$disks=& { cmd /c "echo list disk | diskpart" }
    $disks="list disk" | diskpart
    $disks | % { if ($_ -match "GB") { $_ } }

    Через WMI тоже наверное возможно, что-нибудь вроде:

    $disks = get-wmiobject -class Win32_DiskDrive
    $disks | % { $_.DeviceID }
    • Предложено в качестве ответа Vasily GusevModerator 7 декабря 2009 г. 11:15
    • Изменено 01MDM 7 декабря 2009 г. 11:30
    • Помечено в качестве ответа Anatoly M 7 декабря 2009 г. 14:29
    7 декабря 2009 г. 8:38
  • > Win32_DiskDrive
    Ага, там всё есть. Список доступных свойств смотреть через gwmi win32_diskdrive |get-member или gwmi win32_diskdrive| format-list *
    На всякий случай добавил еще стоблбец только с цифрой.

    PS C:\root> gwmi win32_diskdrive | 
    select caption, SCSIPort, deviceId,
    @{name='id';expression={$_.deviceid -replace '^.+drive'}} caption SCSIPort deviceId id ------- -------- -------- -- ST3750330AS ATA Device 2 \\.\PHYSICALDRIVE0 0 ST3750330AS ATA Device 6 \\.\PHYSICALDRIVE1 1 Msft Virtual Disk SCSI Disk Device 8 \\.\PHYSICALDRIVE3 3 ST910082 4A USB Device \\.\PHYSICALDRIVE2 2


    Сорри маленькая придирочка :) Следующий код:
    $disks | % { if ($_ -match "GB") { $_ } }
    Вполне заменяется на
    $disks | Select-String "GB"


    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    • Предложено в качестве ответа Vasily GusevModerator 7 декабря 2009 г. 11:15
    • Помечено в качестве ответа Anatoly M 7 декабря 2009 г. 14:29
    7 декабря 2009 г. 11:13
    Модератор

Все ответы

  • Я так понял, что именно физические диски? Не разделы. Тогда  с помощью diskpart:

    #$disks=& { cmd /c "echo list disk | diskpart" }
    $disks="list disk" | diskpart
    $disks | % { if ($_ -match "GB") { $_ } }

    Через WMI тоже наверное возможно, что-нибудь вроде:

    $disks = get-wmiobject -class Win32_DiskDrive
    $disks | % { $_.DeviceID }
    • Предложено в качестве ответа Vasily GusevModerator 7 декабря 2009 г. 11:15
    • Изменено 01MDM 7 декабря 2009 г. 11:30
    • Помечено в качестве ответа Anatoly M 7 декабря 2009 г. 14:29
    7 декабря 2009 г. 8:38
  • > Win32_DiskDrive
    Ага, там всё есть. Список доступных свойств смотреть через gwmi win32_diskdrive |get-member или gwmi win32_diskdrive| format-list *
    На всякий случай добавил еще стоблбец только с цифрой.

    PS C:\root> gwmi win32_diskdrive | 
    select caption, SCSIPort, deviceId,
    @{name='id';expression={$_.deviceid -replace '^.+drive'}} caption SCSIPort deviceId id ------- -------- -------- -- ST3750330AS ATA Device 2 \\.\PHYSICALDRIVE0 0 ST3750330AS ATA Device 6 \\.\PHYSICALDRIVE1 1 Msft Virtual Disk SCSI Disk Device 8 \\.\PHYSICALDRIVE3 3 ST910082 4A USB Device \\.\PHYSICALDRIVE2 2


    Сорри маленькая придирочка :) Следующий код:
    $disks | % { if ($_ -match "GB") { $_ } }
    Вполне заменяется на
    $disks | Select-String "GB"


    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    • Предложено в качестве ответа Vasily GusevModerator 7 декабря 2009 г. 11:15
    • Помечено в качестве ответа Anatoly M 7 декабря 2009 г. 14:29
    7 декабря 2009 г. 11:13
    Модератор
  • И можно без cmd /c (Добавил)
    7 декабря 2009 г. 11:31
  • Спасибо большое!

    7 декабря 2009 г. 11:34