Pergunta

Existe uma maneira de saber se um disco tem uma partição GPT ou MBR com PowerShell?

Foi útil?

Solução

Usando WMI

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

Usando 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 "*"}}

Outras dicas

Se você estiver no Windows 8, Windows Server 2012 ou mais recente, poderá usar um dos cmdlets de armazenamento para verificar isso:

Get-Disk

A saída deste comando será formatada como:

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

Observe que a coluna mais à direita indica o estilo de partição, que é a peça de dados que você está procurando.

Se você estiver no Windows 7, Windows Server 2008 R2 ou mais antigo, use o DiskPart ou o WMI para obter essas informações. Eu prefiro usar o DiskPart. Modelo

diskpart

Seguido por

list disk

A saída será:

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

Observe que o disco 0 e 1 são os discos GPT e eles têm um asterisco na coluna apropriada.

Para descobrir se algum disco possui um MBR ou um GPT, isso é muito fácil. Iniciar o PowerShell. Execute .. DiskPart, pressione Enter, Run .. Listar disco, pressione Enter. Aqui está a saída do meu computador:

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

Você receberá uma entrada sim, Eu penso!, para Dyn ou GPT se o seu disco for dinâmico ou o tipo de tabela de partição é GPT, respectivamente. Procurei por algum tempo e o suficiente para meus propósitos. Para comparar a saída do script por Josh usando o WMI, aqui está a saída.

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

Não. PowerShell não possui comandos nativos internos para isso. Powershell, como o nome sugere, é uma concha. Ele vem com um bom conjunto de cmdlets úteis e genéricos, mas a especialização como essa é deixada para comandos nativos externos (como DiskPart), módulos e/ou snapins.

Como você sempre encontrará o DiskPart.exe onde encontrar PowerShell, use isso.

Se você pretende usar o PowerShell sozinho, talvez o WMI possa ajudar. Dê uma olhada na saída de:

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

-Oisin

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top