Обнаружение разделов GPT и MBR с помощью Powershell - PullRequest
4 голосов
/ 01 октября 2010

Есть ли способ узнать, имеет ли диск GPT или раздел MBR с powershell?

Ответы [ 4 ]

6 голосов
/ 29 февраля 2016

Если вы используете Windows 8, Windows Server 2012 или новее, вы можете использовать один из командлетов хранилища, чтобы проверить это:

Get-Disk

Вывод этой команды будет отформатирован как:

PS C:\> Get-Disk

Number Friendly Name                            OperationalStatus                    Total Size Partition Style
------ -------------                            -----------------                    ---------- ---------------
0      Microsoft Virtual Disk                   Online                                    42 GB GPT
1      Microsoft Virtual Disk                   Online                                     1 GB GPT
2      Microsoft Virtual Disk                   Offline                                    2 GB RAW
3      Microsoft Virtual Disk                   Offline                                    3 GB RAW

Обратите внимание, что в самом правом столбце указан стиль раздела, который представляет собой часть данных, которую вы ищете.

Если вы работаете в Windows 7, Windows Server 2008 R2 или более ранней версии, вам следует использовать diskpart или WMI для получения этой информации. Я предпочитаю использовать diskpart. Тип

diskpart

с последующим

list disk

Вывод будет выглядеть так:

PS C:\> diskpart

Microsoft DiskPart version 6.3.9600

Copyright (C) 1999-2013 Microsoft Corporation.
On computer: WIN-BN8G3VMNQ9T

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online           42 GB      0 B        *
  Disk 1    Online         1024 MB   991 MB        *
  Disk 2    Offline        2048 MB  2048 MB
  Disk 3    Offline        3072 MB  3072 MB

Обратите внимание, что оба диска 0 и 1 являются GPT-дисками, и в соответствующем столбце у них есть звездочка.

6 голосов
/ 01 октября 2010

Использование WMI

gwmi -query "Select * from Win32_DiskPartition WHERE Index = 0" | Select-Object DiskIndex, @{Name="GPT";Expression={$_.Type.StartsWith("GPT")}}

Использование Diskpart

$a = "list disk" | diskpart
$m = [String]::Join("`n", $a) | Select-String -Pattern "Disk (\d+).{43}(.)" -AllMatches
$m.Matches | Select-Object @{Name="DiskIndex";Expression={$_.Groups[1].Value}}, @{Name="GPT";Expression={$_.Groups[2].Value -eq "*"}}
0 голосов
/ 22 ноября 2011

Узнать, есть ли на каком-нибудь диске MBR или GPT, это очень просто. Запустить PowerShell. Бежать.. diskpart, нажмите ENTER, запустите .. список дисков, нажмите ENTER. Вот вывод моего компьютера:

Disk ###  Status         Size     Free     Dyn  Gpt
--------  -------------  -------  -------  ---  ---
Disk 0    Online          232 GB  1024 KB
Disk 1    Online          465 GB  1024 KB
Disk 2    Online         3820 MB      0 B

Вы получите запись yes, Я думаю !, для Dyn или Gpt, если ваш диск динамический или тип таблицы разделов - Gpt соответственно. Я искал в течение некоторого времени и достаточно для моих целей. Чтобы сравнить вывод сценария Джоша с использованием WMI, вот вывод ..

DiskIndex                                     GPT
---------                                     ---
        0                                   False
        1                                   False
        2                                   False
0 голосов
/ 01 октября 2010

Нет.PowerShell не имеет встроенных команд для этого.PowerShell, как следует из названия, является оболочкой.Он поставляется с хорошим набором полезных общих командлетов, но специализация, подобная этой, оставлена ​​для внешних собственных команд (таких как diskpart), модулей и / или оснасток.Вы находите PowerShell, используйте его.

Если вы собираетесь использовать только PowerShell, то, возможно, WMI может помочь.Посмотрите на вывод:

PS> gwmi win32_partition | % { $_ | fl * }

-Oisin

...