tech.guitarrapc.cóm

Technical updates

PowerShell でディスクの初期化からフォーマットを行う

Windows のディスクを管理したいとき、古の時代から diskpart コマンドがあります。

DiskPart Command-Line Options | Microsoft Learn

www.atmarkit.co.jp

しかし現在これらのdiskpart 操作をを使うことはありません。PowerShell でより高度、安全に操作できるからです。

こういったディスクの初期化処理は、AWS や Azure においてディスク追加するときにも必要になることがあります。

そこで今回はその例を少し見てみましょう。

目次

GUI のディスク管理

Windows 10 を例にします。 Win +x > k によって ディスクの管理 を起動できます。

例えば以下のディスク構成があります。

この中のディスク3 は、現在は プライマリパーティション1つの 単一パーティション構成です。こういった場合は GUI でボリュームの削除を行って綺麗に構成可能です。

しかし、以前OSをインストールしていたディスクの場合は GUI で行えることに制限があります。*1

ディスクの管理では、OSインストール時に自動構成された回復パーティションを削除できません。

そこで古代においては、diskpart を使って操作を行うことがありました。

今回は、OSが入ったりした ディスク3 を「完全に消去 > 単一パーティション > NTFSフォーマット」まで構成してみましょう。

diskpart

コマンドプロンプトから diskpart を入力すると、管理者へのUAC昇格と共に diskpart の対話モードが開始します。

まずは list diskでディスク一覧を呼び出して対象を把握します。

次に操作対象ディスクを select disk 3 で選択します。

操作内容として、回復パーティションも含めて綺麗にするので、clean コマンドでディスクを消去します。

という感じです。

PowerShell で初期化する

PowerShell には、Disk や Partition、Volume 操作用の Cmdlet があります。これらをパイプラインで繋げれば、初期化からフォーマットまでワンライナーで綺麗に完了します。*2

gist.github.com

どうでしょうか?先のディスク3の初期化も一発です。かつ、ディスクの製品名から指定もできたり、BootDisk を除外してまとめて行ったりも可能です。

操作も Cmdlet が明確に意図を示しています。

Cmdlet やっていること
Get-Disk ディスク一覧の取得
where FriendlyName -Match ST3500 ST3500という製品名に該当するディスクにフィルタ
Clear-Disk -RemoveData -RemoveOEM -PassThru ディスクを消去
Initialize-Disk -PartitionStyle MBR -PassThru ディスクを MBRで初期化
New-Partition -UseMaximumSize -AssignDriveLetter 新規パーティションをディスク全体を単一として、ドライブレターを自動付与で作成
Format-Volume -FileSystem NTFS -Force 作成したボリュームを NTFS でフォーマット

簡単ですね。

まとめ

diskpart しかできないという操作はそうそうありません。回復コンソールなど、極めて限定的なシーンでの利用となるでしょう。

こういったWindowsシステム系の操作は PowerShell だと本当に楽に書けるのでぜひ試してみるといいと思います。

*1:OSインストール時やパーティション操作ソフトを除きます

*2:PowerShellを管理者権限で起動する必要があります