Powershell:用Powershell取代Diskpart

#Update @ 2021/04/21:新增移除OEM磁區參數

一直以來都很習慣使用Diskpart來執行磁碟機操作,利用呼叫Diskpart搭配參數給他txt檔,很放便可以做成批次執行。當然用Powershell也能這樣呼叫Diskpart帶參數也可以。不過如果能用Powershell直接對磁碟進行操作當然是更好的。

列出所有磁碟

Get-Disk

列出所有分割區

Get-Partition

列出磁碟 0 的分割區

Get-Partition -DiskNumber 0

清除磁碟【警告:清除之前請確認磁碟號碼】

Get-disk 4 | Clear-Disk -RemoveData

清除磁碟(移除OEM區塊)【警告:清除之前請確認磁碟號碼】

Get-disk 3 | clear-disk -RemoveData -RemoveOEM

建立分割區,使用全部空間

New-Partition -DiskNumber 4 -UseMaximumSize

建立分割區,先使用部分空間32GB,然後再使用剩下空間(分割為兩個磁碟區)

New-Partition -DiskNumber 4 -Size 32GB
New-Partition -DiskNumber 4 -UseMaximumSize

格式化磁碟4分割區1為NTFS

Get-Partition -DiskNumber 4 -PartitionNumber 1 | Format-Volume -FileSystem NTFS

格式化磁碟4分割區2為FAT32

Get-Partition -DiskNumber 4 -PartitionNumber 2 | Format-Volume -FileSystem FAT32

指定磁碟4分割區1磁碟機代號為L指定磁碟4分割區2磁碟機代號為M

Set-Partition -DiskNumber 4 -PartitionNumber 1 -NewDriveLetter L
Set-Partition -DiskNumber 4 -PartitionNumber 2 -NewDriveLetter M

更換磁碟機代號L為Q

Set-Partition -DriveLetter L -NewDriveLetter Q

下面是一段我寫在批次檔裡面使用Diskpart 叫用文字檔當參數的內容
環境大概是主機裡有一顆500G硬碟,已經切了200G做C,剩下的尚未指定。
當下的隨身碟是D,因此我必須先將隨身碟變更磁碟機代號為E,然後將本機硬碟剩下的空間分割為D並快速格式化NTFS,本機硬碟磁區0/1為EFI/還原用保護磁區,磁區3為C,所以選擇磁碟4來分割操作。

select disk 1
select partition 1
assign letter=e
select disk 0
create partition primary
select partition 4
FORMAT FS=NTFS LABEL="DATA" quick
assign letter=d
exit

換成Powershell,兩行搞定

Set-Partition -DriveLetter D -NewDriveLetter E
New-Partition -DiskNumber 0 -UseMaximumSize -IsActive -DriveLetter D  | Format-Volume -FileSystem NTFS -NewFileSystemLabel Data

關於MBR / GPT轉換,Powershell預設操作Clear-Disk完就是GPT,要轉回MBR目前看來只能找Diskpart

Select disk 4
convert mbr