RunCommandでWindowsの追加ディスクにドライブレターを割り当ててみた

アイキャッチ AWS EC2

ご機嫌いかがでしょうか、豊崎です。

RunCommandでWindows2016の追加ディスクにドライブレターを割り当てる機会がありましたので、書いていきたいと思います。

Windows2012R2とWindows2016の追加ディスクに対する構築時の挙動の違いが本記事を書くきっかけになりました。
差異は以下となります。(2017/07/26時点)

  • Windows2012R2 > Onlineでドライブレターが割り当てられている
  • Windows2016 > Offline

前提

  • 確認のために、以下2つAMIからEC2を起動
    • Windows2012R2(日本語OS)  ami-249fad43
    • Windows2016(日本語OS)  ami-186f757f
  • 起動時にDドライブ用の追加ディスクを選択
  • IAMRoleでRunCommandの実行権限を付与

起動直後のDiskの状態

各EC2の起動直後における、Diskの状態を確認してみます。

実行コマンド
RunCommandでAWS-RunPowerShellScriptと対象インスタンスを選択し以下コマンドを実行しました

Get-Disk
Get-Volume

Windows2012R2(日本語OS) ami-249fad43

Number Friendly Name                            Operationa Total Size Partition
                                                lStatus                Style   
------ -------------                            ---------- ---------- ---------
1      AWS PVDISK SCSI Disk Device              Online          35 GB MBR      
0      AWS PVDISK SCSI Disk Device              Online          50 GB MBR      

DriveLetter     : 
DriveType       : Fixed
FileSystem      : NTFS
FileSystemLabel : 
HealthStatus    : Healthy
ObjectId        : \\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\
Path            : \\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\
Size            : 366997504
SizeRemaining   : 62029824
PSComputerName  : 


DriveLetter     : D
DriveType       : Fixed
FileSystem      : NTFS
FileSystemLabel : 
HealthStatus    : Healthy
ObjectId        : \\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\
Path            : \\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\
Size            : 37578862592
SizeRemaining   : 37490626560
PSComputerName  : 


DriveLetter     : C
DriveType       : Fixed
FileSystem      : NTFS
FileSystemLabel : 
HealthStatus    : Healthy
ObjectId        : \\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\
Path            : \\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\
Size            : 53317988352
SizeRemaining   : 33756291072
PSComputerName  : 

Windows2016(日本語OS)  ami-186f757f

Number Friendly Name Serial Number   HealthStatus         OperationalStatus
------ -------- -------------        ------------         ----------------
0      A        0000                 Healthy              Online          
1      A        0001                 Healthy              Offline         

ObjectId             : {1}\\EC2AMAZ-B1VELUJ\root/Microsoft/Windows/Storage/Prov
                       iders_v2\WSP_Volume.ObjectId="{XXXXXXXX-XXXX-XXXX-XXXX-X
                       XXXXXXXXXXX}:VO:\\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXX
                       XXXXXXX}\"
PassThroughClass     : 
PassThroughIds       : 
PassThroughNamespace : 
PassThroughServer    : 
UniqueId             : \\?\Volume{XXXXXXXX-0000-0000-0000-100000000000}\
AllocationUnitSize   : 4096
DedupMode            : NotAvailable
DriveLetter          : C
DriveType            : Fixed
FileSystem           : NTFS
FileSystemLabel      : Windows
FileSystemType       : NTFS
HealthStatus         : Healthy
OperationalStatus    : OK
Path                 : \\?\Volume{XXXXXXXX-0000-0000-0000-100000000000}\
Size                 : 53684989952
SizeRemaining        : 38604296192
PSComputerName       : 

Windows2012r2では追加ディスクが自動的にDドライブとして認識されていますが、 Windows2016では追加ディスクはオフラインになっています。

RunCommandで追加ドライブの操作

それでは、RunCommandでWindows2016の追加ディスクをDドライブとして利用できる状態にしていきたいと思います。

実行コマンド
RunCommandでAWS-RunPowerShellScriptと対象インスタンスを選択し以下コマンドを実行します。
今回はDドライブのみの追加を想定して、マッチ条件を「Offline」で対象ディスクを抽出しています。

$adddisk = Get-Disk | where OperationalStatus -match Offline
$adddisk | Set-Disk -IsOffline $false
$adddisk | Set-Disk -IsReadOnly $false
$adddisk | Initialize-Disk -PartitionStyle GPT
$adddisk  | New-Partition -UseMaximumSize -DriveLetter "D"
Format-Volume -DriveLetter "D" -FileSystem NTFS -Force

実行後改めて、以下を実行してください。

実行コマンド
RunCommandでAWS-RunPowerShellScriptと対象インスタンスを選択し以下コマンドを実行します。

Get-Disk
Get-Volume

結果

Number Friendly Name Serial Number   HealthStatus         OperationalStatus
------ -------- -------------        ------------         ----------------
0      A        0000                 Healthy              Online          
1      A        0001                 Healthy              Online          

ObjectId             : {1}\\EC2AMAZ-B1VELUJ\root/Microsoft/Windows/Storage/Prov
                       iders_v2\WSP_Volume.ObjectId="{XXXXXXXX-XXXX-XXXX-XXXX-X
                       XXXXXXXXXXX}:VO:\\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXX
                       XXXXXXX}\"
PassThroughClass     : 
PassThroughIds       : 
PassThroughNamespace : 
PassThroughServer    : 
UniqueId             : \\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\
AllocationUnitSize   : 4096
DedupMode            : NotAvailable
DriveLetter          : C
DriveType            : Fixed
FileSystem           : NTFS
FileSystemLabel      : Windows
FileSystemType       : NTFS
HealthStatus         : Healthy
OperationalStatus    : OK
Path                 : \\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\
Size                 : 53684989952
SizeRemaining        : 38603206656
PSComputerName       : 


ObjectId             : {1}\\EC2AMAZ-B1VELUJ\root/Microsoft/Windows/Storage/Prov
                       iders_v2\WSP_Volume.ObjectId="{XXXXXXXX-XXXX-XXXX-XXXX-X
                       XXXXXXXXXXX}:VO:\\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXX
                       XXXXXXX}\"
PassThroughClass     : 
PassThroughIds       : 
PassThroughNamespace : 
PassThroughServer    : 
UniqueId             : \\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\
AllocationUnitSize   : 4096
DedupMode            : NotAvailable
DriveLetter          : D
DriveType            : Fixed
FileSystem           : NTFS
FileSystemLabel      : 
FileSystemType       : NTFS
HealthStatus         : Healthy
OperationalStatus    : OK
Path                 : \\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\
Size                 : 26707226624
SizeRemaining        : 26632945664
PSComputerName       : 

無事、追加ディスクがDドライブとして認識されていることが確認できました。

さいごに

RunCommandの実行ができるロールが付与されているEC2(Windows)であればPowershellで行える操作はAWSマネジメントコンソールやAWS-CLIから実行できます。今回は追加ディスクの操作をおこなってみました。誰かのお役にたてば、幸甚です。