使用Powershell检测GPT和MBR分区

时间:2010-10-01 15:54:52

标签: powershell mbr guid-partition-table

有没有办法判断磁盘是否有带PowerShell的GPT或MBR分区?

4 个答案:

答案 0 :(得分:6)

使用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 "*"}}

答案 1 :(得分:6)

如果您使用的是Windows 8,Windows Server 2012或更高版本,则可以使用其中一个存储cmdlet来检查:

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磁盘,并且在相应的列中有星号。

答案 2 :(得分:0)

没有。 PowerShell没有任何本机内置命令。 PowerShell,顾名思义,是一个shell。它附带了一组有用的通用cmdlet,但像这样的专门化留给外部本机命令(如diskpart),模块和/或管理单元。

由于您总是会找到找到powershell的diskpart.exe,请使用它。

如果您打算单独使用PowerShell,那么WMI可能会有所帮助。看看输出:

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

-Oisin

答案 3 :(得分:0)

要了解任何磁盘是否有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

如果您的磁盘是动态磁盘或分区表类型分别是Gpt,那么对于Dyn或Gpt,您将获得一个yes条目,我认为 !, 我搜索了一段时间,足够我的目的。为了比较Josh使用WMI编写的脚本输出,这里是输出..

DiskIndex                                     GPT
---------                                     ---
        0                                   False
        1                                   False
        2                                   False