この記事では、PowerShell から直接ディスク、パーティション、ボリュームを管理する方法について詳しく説明します。何か簡単な操作をするためだけに GUI のディスク管理ツール ( diskmgmt.msc ) を開かなければならなかったことがあれば、PowerShell でスクリプトを作成したりコマンドを実行したりする方法を知っておくと、時間と手間を節約できます。ディスクが RAW 状態またはオフラインの場合や、無限のメニューを探さずに新しいドライブを初期化、フォーマット、またはパーティション分割したい場合もあります。170 を超えるコマンドレットがある PowerShell のストレージ モジュールを使用すると、これらすべてをコマンド ラインから実行できます。少し奇妙に思えますが、一度コツをつかめば、Windows の GUI が追いつくのを待つよりも速くディスクを管理できるようになります。ただし、非常に強力なため、注意しないと間違ったコマンドでデータが消去される可能性があることに注意してください。Windows でいまだにディスク管理が複雑になっているのは少し奇妙ですが、それが現実です。では、これらのコマンドが実際のシナリオでどのように機能するかを見ていきましょう。
PowerShell でディスクとパーティションを管理する方法
ローカルディスクを一覧表示して作業内容を確認する
まず最初に、何かを台無しにする前に、接続されているディスクとその現在の状態を明確に把握してください。
Get-Disk | ft -AutoSize
これにより、すべてのディスクとその属性が表示されます。Windows システムドライブを対象としている場合は、IsSystemでフィルタリングできます。
Get-Disk | Where-Object IsSystem -eq $True | fl
オフラインまたは初期化されていないディスクには注意してください。RAWまたは未割り当てのステータスが表示されます。データが何もない、またはパーティションテーブルがRAWの新しいディスクが見つかった場合は、オンラインにして初期化するタイミングです。
オフラインディスクをオンラインにする
ディスクがオフラインと表示される場合は、他の操作を行う前にディスクの電源を入れる必要があります。Windows が新しいディスクを自動的にオンラインにしない場合があります。
Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False
このコマンドはディスクをオフラインからオンラインに切り替えます。多少のちらつきが生じる可能性があります。ディスクがオフラインのままである場合は、この部分を複数回実行する必要があるかもしれません。マシンによっては、1回目は失敗しても、再起動または2回目の試行で正常に動作する場合もあります。
新しいディスクを初期化して使用する
新しいディスクは、初期化されていない状態、またはRAW状態になっていることがよくあります。これらを使用できるようにするには、初期化してパーティションテーブルを設定する必要があります。パーティションテーブルは、GPT(より新しい形式)またはMBR(古い形式ですが、現在でも一般的です)のいずれかです。デフォルトはGPTですが、必要に応じてMBRに設定できます。
Initialize-Disk -Number 1
1を実際のディスク番号に置き換えてください。ディスク番号は前のコマンドで確認できます。GPTではなくMBRを強制的に使用する場合は、以下を実行してください。
Set-Disk 2 -PartitionStyle MBR
ディスクが初期化後もRAW状態のままになることがあります。特にパーティションテーブルが破損している場合に多く見られます。再初期化する前に、 TestDiskなどのツールを使って復旧することを検討してください。
パーティションを作成し、ドライブ文字を割り当てる
ディスクが初期化されると、パーティションの作成は簡単です。New -Partitionコマンドを使用すると、サイズを指定することも、利用可能なすべてのスペースを使用することもできます。
New-Partition –DiskNumber 1 -Size 10gb -DriveLetter L
未割り当て領域をすべて占有し、ドライブ文字を自動的に割り当てる場合は、次のコマンドを実行します。
New-Partition –DiskNumber 1 -AssignDriveLetter –UseMaximumSize
既存のドライブ文字を変更するには、次のように置き換えます。
Set-Partition –DriveLetter L -NewDriveLetter U
未割り当て領域がある場合は、既存のパーティションを拡張できます。まず、サポートされている最大サイズを確認してください。
$MaxSize = (Get-PartitionSupportedSize -DriveLetter L).SizeMax Resize-Partition -DriveLetter L -Size $MaxSize
新しいパーティションをフォーマットする
次に、NTFSでフォーマットし、ラベルを付けます。これはGUIで行うのと似ていますが、コマンドラインから行います。
Format-Volume -DriveLetter L -FileSystem NTFS -NewFileSystemLabel DBData -Confirm:$false
必要に応じてパーティションを削除する
ディスクを完全にクリアしたい場合は、すべてのパーティションを削除できます。
Get-Partition –DiskNumber 1, 2 | Remove-Partition -Confirm:$false
または、OEM または EFI パーティションを含むすべてを消去して新しくしたい場合は、次のコマンドを実行します。
Clear-Disk -Number 1 -RemoveData -Confirm:$false
ディスクに OEM リカバリまたは EFI パーティションが含まれている可能性がある場合は、ジャンク パーティションが残らないように必ず-RemoveOEMを含めてください。
Clear-Disk -Number 1 -RemoveData –RemoveOEM
新しい未加工のディスクを接続する場合は、次のように簡単なワンライナーで、初期化、パーティション分割、フォーマットを一度にすべて処理します。
Get-Disk | Where-Object PartitionStyle -eq 'RAW' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS -Confirm:$false
コマンドラインのみのセットアップやGUIのないサーバーに最適です。ただし、入力ミスで意図しないディスクが消去される可能性があるため、特に注意してください。
PowerShellを使ったディスク管理は、最初は難しそうに思えるかもしれませんが、コマンドを覚えてしまえば、操作が速くなり、スクリプト化も容易になり、ドラッグ&ドロップの際の面倒なミスも少なくなります。さらに、Server Coreや最小構成のインストールでは、これがほぼ唯一の方法です。
まとめ
- Get-Disk を使用して、ディスクとその状態を一覧表示します。
- Set-Diskを使用してオフライン ディスクをオンラインにします。
- Initialize-Diskを使用して新しいディスクを初期化します。
- New-PartitionおよびResize-Partitionを使用してパーティションを作成および拡張します。
- Format-Volumeを使用してディスクをフォーマットします。
- Remove-Partitionを使用してパーティションを削除するか、Clear-Diskを使用してディスクを消去します。
- 注意してください。破壊的なコマンドを実行する前に、ディスク番号を再確認してください。
まとめ
これらの機能はGUIをクリックするほど簡単ではありませんが、一度理解してしまえばはるかに強力です。Windowsはディスク管理を必要以上に難しくしているように感じることもありますが、これらのコマンドを使えば、ストレージ管理が自然にできるようになります。ただし、作業を始める前に重要なデータを必ずバックアップしてください。注意しないと、簡単に失敗してしまう可能性があります。特にヘッドレスサーバーやリモート環境の場合、この機能が数時間の節約になることを願っています。この機能が、ディスク管理をより迅速に行えるようになる助けになれば幸いです。