本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Repair-Volume」コマンドレットを解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、コンピュータに接続されたディスク上のボリュームのエラーチェックと修復を行う「Repair-Volume」コマンドレットです。
パーティションやボリュームは、これまでも繰り返し解説してきた通り、OSからディスクに対してデータの読み書きを行うために必要な論理区分であり、指定したファイルシステムでフォーマットすることによってOSからデータの読み書きが可能になります。
最近のファイルシステムは一昔前とは異なり、正常にシャットダウンせずにコンピュータの電源を切ったり、停電などの不可抗力に遭遇したりしても、めったに破損することはなくなりましたが、何らかの要因によって破損してしまう場合もあります。その場合、まずファイルシステムに対するエラーチェックを実施して、必要に応じて修復作業を行う、という手順を踏みます。
ファイルシステムのエラーチェック方法としてまず思い付くのが、GUI(グラフィカルユーザーインタフェース)ツールから実施できる「エラーチェック」でしょう(画面1)。
エラーチェックはドライブの「プロパティ」にある「ツール」タブから実行可能で、問題が発見された場合は修復することも可能です。
また、コマンドプロンプトの「chkdsk」コマンドもありますが、Windows PowerShellで同等の作業を実施する場合は今回紹介するRepair-Volumeコマンドレットを使用します。
オプション | 意味 |
---|---|
-DriveLetter | エラーチェックを実施したいボリュームのドライブレターを指定する。「-ObjectID」オプション指定時には省略可能 |
-ObjectID | エラーチェックを実施したいボリュームのオブジェクトIDを指定する。「-DriveLetter」オプション指定時には省略可能 |
-OfflineScanAndFix | エラーチェックを読み取り/書き込みモードで実行する。省略可能 |
-Scan | エラーチェックをスキャンモードで実行する。省略可能 |
-SpotFix | エラーチェックをスポット修正モードで実行する。省略可能 |
Repair-Volumeコマンドレットを「-OfflineScanAndFix」オプションを付けて実行すると、指定したボリュームをオフラインにしてスキャンし、エラーを発見した場合は修復を行います(画面2)。これは、chkdskコマンドの「/f」オプションと同等のものになります。
なお、固定ディスクに対してRepair-Volumeコマンドレットを実行する際は、管理者権限が必要です。
Repair-Volume -DriveLetter D -OfflineScanAndFix
画面2のように、Repair-Volumeコマンドレットでは実行結果だけがシンプルに表示されます。chkdskコマンドのように詳細な内容を確認したい場合は、「イベントログ」の「アプリケーションログ」を確認する必要があります。
「-OfflineScanAndFix」オプションは、チェック対象のボリュームを一時的にオフラインにするため、システムドライブであるCドライブには実行できません。Cドライブに実行した場合は、実行結果として「Failed」(失敗)が返されます(画面3)。
Repair-Volumeコマンドレットを「-Scan」オプションを付けて実行すると、指定したボリュームをオンラインのまま、エラーチェックのみを行います(画面4)。これは、chkdskコマンドの「/scan」オプションと同等のものになります。
Repair-Volume -DriveLetter C -Scan
Cドライブに対するエラーチェックのため、-OfflineScanAndFixオプションを付与して実行した場合はエラーが発生していますが、-Scanオプションの場合はエラーチェックが実施されていることが確認できます。
なお、-Scanオプションはファイルシステムが「NTFS」(NT File System)の場合のみに使用可能であり、「ReFS」(Resilient File System)や「exFAT」(Extended File Allocation Table)といったNTFS以外のファイルシステムでは使用できません(画面5)。
ドライブレターが付与されていないボリュームに対して「Repair-Volume」コマンドレットを実行する場合は、「-ObjectID」オプションを使用します。
エラーチェックを行うボリュームのオブジェクトIDは、本連載第100回で紹介した「Get-Volume」コマンドレットで取得できます。ここでは、本連載第94回で紹介した「Get-Partition」コマンドレットでパーティションを特定し、「Get-Volume」コマンドレットでオブジェクトIDを取得して指定する、という流れで実行しています(画面6)。
Repair-Volume -ObjectId (Get-Partition -DiskNumber 2 | Get-Volume).ObjectId -Scan
イベントログでの実行結果の中で「 のファイルシステムをチェックしています」とドライブレターが表示されていない(Cドライブに対してチェックを行った画面4では「C:」と表示されている)ところからも、ドライブレターが設定されていないボリュームに対して実行していることが分かります。
Microsoft MVP for Cloud and Datacenter Management(2012-2024)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.