【PowerCLI】ExtensionDataとはなんのか

どうも、Tです。

PowerCLIをいじっていて、ExtensionDataがよくわからなかったので備忘録です。

ExtensionDataの場所

PowerCLIで仮想マシンオブジェクトをGetして「Select-Object *」などですべてのプロパティを見るとExtensionDataが表示されます。

Get-VM -Name w2k19 | Select-Object *

確認したわけではありませんが、仮想マシン以外のオブジェクト(ホストやネットワークなど)でも基本的に保持しているプロパティになります。

ExtensionDataの用途

Get-VMだけだと非常に簡素な情報しかでてきません。

「Get-VM -Name w2k19 | Select-Object *」などを使うことで先ほどのような多くの情報を表示することが可能です。

さらに詳しい情報を取得したいときに、ExtensionDataプロパティの中身を見ると参照することができます。

(Get-VM -Name w2k19).ExtensionData

ExtensionDataプロパティにはほかにも多くの情報が含まれており、下記では仮想マシンの稼働時間(秒)を取得しています。結果は250秒稼働しています。これを割っていけば稼働日数、時間の計算が行えます。

(Get-VM -Name w2k19).ExtensionData.Summary.QuickStats.UptimeSeconds

Get-View

ExtensionDataプロパティを見る別の方法として、Get-Viewコマンドレットがあります。VMwareの情報を見てるとGet-Viewを使う方が一般的っぽいようです。

(Get-VM -Name w2k19 | Get-View)

(Get-VM -Name w2k19 | Get-View).Summary.QuickStats.UptimeSeconds

Get-Viewも使い方は多いので、詳しくはリファレンスをご参照ください。

https://developer.vmware.com/docs/powercli/latest/vmware.vimautomation.core/commands/get-view/#GetViewByVIObject

何がうれしいのか

PowerCLIで用意されているコマンドレットでは参照できない情報が扱えるのが一番大きい恩恵ではりますが、ESXiホストの電源ポリシーのようにExtensionDataプロパティ内のメソッドを使わないと設定できない項目がチラホラあります。

https://communities.vmware.com/t5/VMware-PowerCLI-Discussions/how-to-modify-vSphere-power-policy-with-powercli/td-p/1310239

このような設定を行うにも、ExtensionDataが何なのかを理解しておくことは重要かなと思います。上記の設定の意味を調べていてExtensionDataにぶつかりました・・・・。

参考

https://blogs.vmware.com/PowerCLI/2015/02/get-view-part-1-introduction.html
https://blogs.vmware.com/PowerCLI/2015/02/get-view-part-2-views-extension-data.html
https://vmguru.com/2016/02/powershell-friday-extensiondata/

まとめ

PowerCLIのコマンドレットだけでも出来ることは多いですが、ExtensionDataを扱うことでさらにできることが広がりそうです。