VMSA-2018-0025にて、 VM の 3D サポート機能にかかわる
セキュリティ脆弱性が公表されました。
よい機会なので、PowerCLI で VM の設定状況を確認してみます。
ただし、この「3D サポートを有効化」はデフォルトでは無効になっています。
そこで今回の環境では意図的に有効にしています。
まず、今回は 10台の VM を用意しました。
PowerCLI> Get-VM | Sort-Object Name
Name PowerState Num CPUs MemoryGB
---- ---------- -------- --------
test-vm-001 PoweredOn 1 4.000
test-vm-002 PoweredOn 1 4.000
test-vm-003 PoweredOn 1 4.000
test-vm-004 PoweredOn 1 4.000
test-vm-005 PoweredOn 1 4.000
test-vm-006 PoweredOn 1 4.000
test-vm-007 PoweredOn 1 4.000
test-vm-008 PoweredOn 1 4.000
test-vm-009 PoweredOn 1 4.000
test-vm-010 PoweredOn 1 4.000
このうち1台の VM の設定を確認してみます。
対象の仮想デバイスの設定を確認する専用コマンドが見つけられなかったので、
とりあえず VM「test-vm-010」の ExtensionData からデバイスの情報を探ると
Key = 500 が Video Card だとわかるので、その情報を見てみます。
PowerCLI> $vm = Get-VM test-vm-010
PowerCLI> $vm.ExtensionData.Config.Hardware.Device | select Key,{$_.DeviceInfo.Label}
Key $_.DeviceInfo.Label
--- -------------------
200 IDE 0
201 IDE 1
300 PS2 controller 0
100 PCI controller 0
400 SIO controller 0
600 Keyboard
700 Pointing device
500 Video card
12000 VMCI device
1000 SCSI controller 0
15000 SATA controller 0
16000 CD/DVD drive 1
2000 Hard disk 1
4000 Network adapter 1
この VM の Video Card は、Enable3DSupport が True になっていることがわかりました。
PowerCLI> $vm.ExtensionData.Config.Hardware.Device | where {$_.key -eq 500}
VideoRamSizeInKB : 16384
NumDisplays : 1
UseAutoDetect : False
Enable3DSupport : True
Use3dRenderer : automatic
GraphicsMemorySizeInKB : 262144
Key : 500
DeviceInfo : VMware.Vim.Description
Backing :
Connectable :
SlotInfo :
ControllerKey : 100
UnitNumber : 0
Enable3DSupport は、下記のように確認することもできます。
PowerCLI> ($vm.ExtensionData.Config.Hardware.Device | where {$_.key -eq 500}).Enable3DSupport
True
PowerCLI> Get-VM test-vm-010 | %{($_.ExtensionData.Config.Hardware.Device | where {$_.key -eq 500}).Enable3DSupport}
True
まとめて複数の仮想マシンの情報を確認することもできます。
PowerCLI> Get-VM | select Name,@{N="Enable3DSupport";E={($_.ExtensionData.Config.Hardware.Device | where {$_.key -eq 500}).Enable3DSupport}} | Sort-Object Name
Name Enable3DSupport
---- ---------------
test-vm-001 False
test-vm-002 False
test-vm-003 False
test-vm-004 True
test-vm-005 True
test-vm-006 False
test-vm-007 True
test-vm-008 True
test-vm-009 True
test-vm-010 True
下記のように、Enable3DSupport = True の VM だけ抽出することもできます。
PowerCLI> Get-VM | select Name,@{N="Enable3DSupport";E={($_.ExtensionData.Config.Hardware.Device | where {$_.key -eq 500}).Enable3DSupport}} | where {$_.Enable3DSupport -eq "True"} | Sort-Object Name
Name Enable3DSupport
---- ---------------
test-vm-004 True
test-vm-005 True
test-vm-007 True
test-vm-008 True
test-vm-009 True
test-vm-010 True
また、今回の設定のように .vmx パラメータの設定によるものであれば、
シンプルに Get-AdvancedSetting で確認できるケースもあります。
PowerCLI> Get-VM | Get-AdvancedSetting -Name mks.enable3d | select Entity,Value | Sort-Object Entity
Entity Value
------ -----
test-vm-004 TRUE
test-vm-005 TRUE
test-vm-007 TRUE
test-vm-008 TRUE
test-vm-009 TRUE
test-vm-010 TRUE
このように、PowerCLI を利用することで、簡単に、大量 VM の設定確認ができます。
ちなみに、今回の実行環境は Windows PowerShell + PowerCLI 11.0.0 です。
PowerCLI> Get-Host | select Version
Version
-------
5.1.17134.228
PowerCLI> Get-Module VMware.PowerCLI | select Version
Version
-------
11.0.0.10380590
以上、PowerCLI による VM 情報取得例でした。