سؤال

هل هناك طريقة لمعرفة ما إذا كان لدى القرص GPT أو قسم MBR مع PowerShell؟

هل كانت مفيدة؟

المحلول

باستخدام 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 "*"}}

نصائح أخرى

إذا كنت على Windows 8 أو Windows Server 2012 أو الأحدث ، فيمكنك استخدام أحد CMDlets للتخزين للتحقق من ذلك:

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 ، ولديهما علامة نجمية في العمود المناسب.

لمعرفة ما إذا كان أي قرص يحتوي على MBR أو GPT هذا سهل للغاية .. ابدأ PowerShell. قم بتشغيل .. Diskpart ، اضغط على Enter ، Run .. قائمة بالقرص ، اضغط على 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

ستحصل على إدخال نعم ، أظن! ، بالنسبة لـ Dyn أو GPT إذا كان القرص ديناميكيًا أو نوع جدول القسم GPT على التوالي. لقد بحثت عن بعض الوقت وكافي يكفي لأغطيتي. لمقارنة إخراج البرنامج النصي بواسطة Josh باستخدام WMI ، إليك الإخراج ..

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

لا. PowerShell ليس لديه أي أوامر مضمنة محلية لهذا الغرض. PowerShell ، كما يوحي الاسم ، هو قذيفة. إنه يأتي مع مجموعة جيدة من cmdlets المفيدة والعامة ولكن تخصص مثل هذا يترك للأوامر الأصلية الخارجية (مثل Diskpart) ، وحدات و/أو Snapins.

نظرًا لأنك ستجد دائمًا diskpart.exe حيث تجد PowerShell ، استخدم ذلك.

إذا كنت عازمة على استخدام PowerShell وحدها ، فربما يمكن أن يساعد WMI. ألق نظرة على ناتج:

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

-oisin

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top