2023年1月21日土曜日

【PowerShell】Windowsのディスクのオンライン・オフラインとドライブレターを設定する

Windowsでは通常、昔から変わらない「ディスクの管理」画面を開いてディスクのオンライン・オフラインや、ドライブレターの変更作業をすることが多い。

あまりシチュエーションとしては多くないかもしれないが、定期的にディスクをオンライン・オフラインにしたりドライブレターの変更をする作業があるかもしれない。そのような場合は、PowerShellを使えば同様の作業がCLIベースで実施でき、あらかじめスクリプトなどを作っておけば自動化も可能となる。

本記事では、PowerShellを使ってWindowsのディスクのオンライン・オフラインとドライブレター変更の手順を記載する。

環境

Windows Server 2019を用いて動作確認を行った。

ディスクはCドライブ以外に2つ用意する。ディスク1をオンライン、ディスク2をオフラインにしておき、PowerShellを用いて以下の通りディスクの入れ替えを行う。

作業前

ディスクNo ドライブレター 容量 [GB] 状態
0 C 40 オンライン
1 U 30 オンライン
2 なし 32 オフライン

作業前

ディスクNo ドライブレター 容量 [GB] 状態
0 C 40 オンライン
1 なし 30 オフライン
2 U 32 オンライン

ディスクのマウント手順

1. ディスクの状態を確認

作業対象のディスクを確認する。ディスク情報を確認するコマンドレットは、以下3つが存在する。

コマンドレット 説明
Get-Disk 物理ディスクの一覧を表示する。オフラインのディスクも表示される。
Get-Volume 初期化及びフォーマット済みのディスクの一覧を表示する。オフラインのディスク上のボリュームは表示されない。
Get-Partition 各ディスクのパーティション一覧を表示する。オフラインのディスク上のパーティションは表示されない。

実行結果を以下に示す。

Get-Disk

PS C:\> Get-Disk

Number Friendly Name Serial Number                    HealthStatus         OperationalStatus      Total Size Partition
                                                                                                             Style
------ ------------- -------------                    ------------         -----------------      ---------- ----------
0      VMware Vir... 6000c298f4905127fbf4b8af93289b7c Healthy              Online                      40 GB GPT
1      VMware Vir... 6000c29155e1a0ea6d59319bfb0965df Healthy              Online                      30 GB GPT
2      VMware Vir... 6000c298d8b95c7aa7fa9c84622b5faa Healthy              Offline                     32 GB GPT

Get-Volume

PS C:\> Get-Volume

DriveLetter FriendlyName FileSystemType DriveType HealthStatus OperationalStatus SizeRemaining      Size
----------- ------------ -------------- --------- ------------ ----------------- -------------      ----
            回復         NTFS           Fixed     Healthy      OK                     57.05 MB    499 MB
D           VMware Tools Unknown        CD-ROM    Healthy      OK                          0 B 140.61 MB
C                        NTFS           Fixed     Healthy      OK                     29.84 GB   39.4 GB
U           ボリューム   NTFS           Fixed     Healthy      OK                     20.32 GB  29.98 GB
                         FAT32          Fixed     Healthy      OK                     69.12 MB     95 MB

Get-Partition

PS C:\> Get-Partition

   DiskPath: \\?\scsi#disk&ven_vmware&prod_virtual_disk#000000#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}

PartitionNumber  DriveLetter Offset                                        Size Type
---------------  ----------- ------                                        ---- ----
1                            1048576                                     499 MB Recovery
2                            524288000                                    99 MB System
3                            628097024                                    16 MB Reserved
4                C           644874240                                  39.4 GB Basic


   DiskPath: \\?\scsi#disk&ven_vmware&prod_virtual_disk#000100#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}

PartitionNumber  DriveLetter Offset                                        Size Type
---------------  ----------- ------                                        ---- ----
1                            17408                                     15.98 MB Reserved
2                U           16777216                                  29.98 GB Basic


   DiskPath: \\?\scsi#disk&ven_vmware&prod_virtual_disk#000200#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}

PartitionNumber  DriveLetter Offset                                        Size Type
---------------  ----------- ------                                        ---- ----
1                            17408                                     15.98 MB Reserved
2                            16777216                                  31.98 GB Basic

2. ディスク設定変更

確認結果より、今回はディスクNo1とディスクNo2をPowerShellにて入れ替える。

ディスクのオンライン・オフラインはSet-Diskコマンドレットで共通して操作可能だが、ドライブレターの削除(Remove-PartitionAccessPath)と追加(Set-Partition)はコマンドレットが異なる点に注意しよう。

# 取り外し対象ディスクNo
$old_disk_number=1
$old_driveletter=(Get-Disk -Number ${new_disk_number} | Get-Partition -Number 2).DriveLetter
# 取付対象ディスクNo
$new_disk_number=2
$new_driveletter="U"

# ドライブレターの削除
Get-Disk -Number ${old_disk_number} | Get-Partition -Number 2 | Remove-PartitionAccessPath -AccessPath "${old_driveletter}:"
# ディスクのオフライン
Get-Disk -Number ${old_disk_number} | Set-Disk -IsOffline $true

# ディスクのオンライン
Get-Disk -Number ${new_disk_number} | Set-Disk -IsOffline $false
# ドライブレターの付与
Get-Disk -Number ${new_disk_number} | Get-Partition -Number 2 | Set-Partition -NewDriveLetter ${new_driveletter}

ディスクの状態を戻す場合は、ディスクNoの変数を入れ替えればよい (★箇所)。

# 取り外し対象ディスクNo
$old_disk_number=2 #←★2に変更
$old_driveletter=(Get-Disk -Number ${new_disk_number} | Get-Partition -Number 2).DriveLetter
# 取付対象ディスクNo
$new_disk_number=1 #←★1に変更
$new_driveletter="U"

# ドライブレターの削除
Get-Disk -Number ${old_disk_number} | Get-Partition -Number 2 | Remove-PartitionAccessPath -AccessPath "${old_driveletter}:"
# ディスクのオフライン
Get-Disk -Number ${old_disk_number} | Set-Disk -IsOffline $true

# ディスクのオンライン
Get-Disk -Number ${new_disk_number} | Set-Disk -IsOffline $false
# ドライブレターの付与
Get-Disk -Number ${new_disk_number} | Get-Partition -Number 2 | Set-Partition -NewDriveLetter ${new_driveletter}

以上で、PowerShellを使ってィスクのオンライン・オフラインとドライブレター変更の手順は完了となる。

参考

0 件のコメント:

コメントを投稿

人気の投稿