powercli

PowerCLI – オブジェクトの変換

vSphere Web Services SDK (SDK) と vSphere PowerCLI (PowerCLI) の関係

SDK は vSphere の基礎となる SOAP API で、VMware の製品のほとんどが利用しています。vSphere Web Client の UI で仮想環境の操作を行う時、VMware Horizon 環境で仮想デスクトップをリコンポーズする時、Site Recovery Manager でテスト フェイルオーバーする時、などなど。

PowerCLI は .Net 版の SDK の上に実装されているコマンド ライン インターフェースになります。そして Get-View メソッドや ExtensionData プロパティを使えば、PowerCLI の CLI から SDK のメソッドやプロパティを実行することが可能です。ところが、PowerCLI は SDK 上に実装されているとは言え、SDK のすべてのメソッド、プロパティの代替が用意されているわけではありません。そのため Get-View や ExtensionData を使ってスクリプトを実装することがままあります。

SDK オブジェクトと PowerCLI オブジェクト

しかしながら、vSphere PowerCLI の範囲を超えて vSphere Web Services SDK の API を使い始めると、オブジェクトが vSphere PowerCLI のオブジェクトなのか vSphere Web Services SDK のオブジェクトなのかを意識する必要があります。

例えば仮想マシンを表すオブジェクトは両者で大きく異なります。まず、仮想マシンの PowerCLI オブジェクトを見てみましょう。

PS C:\Users\Administrator> Get-PowerCLIVersion

PowerCLI Version
----------------
   VMware vSphere PowerCLI 6.3 Release 1 build 3737840
---------------
Component Versions
---------------
   VMware Cloud Infrastructure Suite PowerCLI Component 6.3 build 3709081
   VMWare AutoDeploy PowerCLI Component 6.0 build 3736841
   VMWare ImageBuilder PowerCLI Component 6.0 build 3736841
   VMware vSphere PowerCLI Component 6.3 build 3709081




PS C:\Users\Administrator> Get-VM "vc-l-01sp" | Get-Member


   TypeName: VMware.VimAutomation.ViCore.Impl.V1.VM.UniversalVirtualMachineImpl

Name                    MemberType Definition                                                                                                      
----                    ---------- ----------                                                                                                      
ConvertToVersion        Method     T VersionedObjectInterop.ConvertToVersion[T]()                                                                  
Equals                  Method     bool Equals(System.Object obj)                                                                                  
......

次に、vSphere Web Services SDK のオブジェクトを見てみます。

PS C:\Users\Administrator> Get-VM "vc-l-01sp" | Get-View | Get-Member


   TypeName: VMware.Vim.VirtualMachine

Name                                        MemberType Definition                                                                                                      
----                                        ---------- ----------                                                                                                      
AcquireMksTicket                            Method     VMware.Vim.VirtualMachineMksTicket AcquireMksTicket()                                                           
AcquireTicket                               Method     VMware.Vim.VirtualMachineTicket AcquireTicket(string ticketType)                                                
......

仮想マシンの PowerCLI オブジェクトの型は

  • VMware.VimAutomation.ViCore.Impl.V1.VM.UniversalVirtualMachineImpl

SDK オブジェクトの型は

  • VMware.Vim.VirtualMachine

となり、そのプロパティ、メソッドの種類も大きく異なります。

オブジェクトの変換

PowerCLI オブジェクト => SDK オブジェクト の変換には

  • コマンドレット: Get-View
  • プロパティ: ExtensionData

を使います。昔は Get-View しか手段がなかったのですが、PowerCLI 4.1 (build 264274) から ExtensionData が追加されました。

逆方向の変換、すなわち SDK オブジェクト => PowerCLI オブジェクトの変換には

  • コマンドレット: Get-VIObjectByView

を使います。

以下に変換、逆変換の例を挙げます。

PS C:\Users\Administrator> Get-VM "vc-l-01sp" | Get-View | Get-VIObjectByVIView

Name                 PowerState Num CPUs MemoryGB       
----                 ---------- -------- --------       
vc-l-01sp            PoweredOn  2        8.000          



PS C:\Users\Administrator> 

使い勝手について

SDK は自由度が高いのですが、いかんせん古の設計のためメソッドのパラメーターを用意するのが億劫なこと この上ありません。そして都度都度 変換の必要に迫られるため、スクリプトが長大化しやすく、かつ、可読性が下がります。あくまで緊急的な時に利用し、使用する際も Function に閉じ込めるなど配慮をした方が、1ヶ月後の自分に優しいスクリプトとなります。

安易に SDK に逃げない!! きっと PowerCLI にメソッドがあるはず!! しかし、プロパティだけはどうにもならないのでその際は潔く ExtensionData を使う。

程度がちょうど良いかと思います。

関連記事

  1. netapp

    Enjoy extremely fast cloning with NetApp VAAI-NAS

    まとめVirtual Storage Console をインスト…

  2. devbox

    Insight into VMware Photon Controller – devb…

    はじめにこのエントリでは、最新の Photon Controlle…

  3. vmware

    VMware Workstation の VM をホストと同時に起動する

    はじめに手元の Windows 10 で Opengrok を動か…

  4. console

    Remote Console でマウスが吹っ飛ぶ件の対策

    まとめ仮想マシンに Windows/Linux をインストールす…

  5. vmware

    L1TF 情報 – VMware

    CVE numbersCVE-2018-3646 - L1 …

  6. powercli

    VMware PowerCLI 6.5.1 のアンインストール

    まとめMSI パッケージではないので、アンインストールはコントロ…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。










  1. quadstor

    How to set IP address to listen for QUAD…
  2. investigation

    Linkedin を使って新興企業の製品の素性を探る
  3. sds

    Software-Defined Storage を考える
  4. container

    Learning technologies around containers
  5. intellij

    IntelliJ IDEA 15.0.1 (Build-IU 143.382) …
PAGE TOP
Translate »