vSphere7環境をコマンド操作するためにVMware PowerCLIを使ってみる

どうも、Tです。

vSphere環境をコマンドでごにょごにょする仕事がありそうなのでPowerCLIインストールしてみました。

スポンサーリンク
アドセンス1

やりたいこと

vSphere環境をコマンドで操作したい。

環境

  • vSphere7.0u2
  • Windows Server2019

なぜPowerCLI?

ぶっちゃコマンドで操作できれば何でもよかったので調べてるところ、Power CLIとvSphre CLIの2つがあってどっちに使用かなぁと思って調べてて下記の経緯からPower CLIを使うことにしました。

vSphere7.0でvSphere CLIが終わった

はい、色々変更の多いvSphere7.0さんですが、vSphere CLIも配布が終わってました。

https://kb.vmware.com/s/article/78473?lang=ja

でもよく読むと下記のようにesxcliとPerl SDKに分かれて使えるような記述あってもう少し調べました。

vSphere 7.0 以降では、vSphere CLI パッケージはリリースされず、販売が終了します。ただし、vSphere CLI のすべての既存の機能は、esxcli および Perl SDK などのより API 中心のツールを使用してサポートされます。

はい。7.0 U2 でPerl SDKが非推奨になったとのこです。

https://code.vmware.com/web/sdk/7.0/vsphere-perl

Power CLIのほうがいいからそっち使えよとのこと。

Deprecation notice: The vSphere SDK for Perl is deprecated in the 7.0 U2 release, and discontinued after that.

VMware PowerCLI, based on PowerShell, provides a similar but more complete interface to vSphere administration and automation. The vSphere Automation API offers language bindings for Python and Java.

vSphere以外にも使えるし・・・

とまぁ、Power CLIを使うことにしました。

vSphere以外にも使えるから色々応用ききそうです。

https://code.vmware.com/web/tool/12.3.0/vmware-powercli

VMware PowerCLI is a command-line and scripting tool built on Windows PowerShell, and provides more than 800 cmdlets for managing and automating vSphere, VMware Cloud Director, vRealize Operations Manager, vSAN, NSX-T Data Center, VMware Cloud Services, VMware Cloud on AWS, VMware HCX, VMware Site Recovery Manager, and VMware Horizon environments.

この時(2021年6月)の最新はVMware PowerCLI 12.3.0です。

PowerCLIインストール

事前環境

下記が必要とのこと。

  • Microsoft .NET Framework 4.5 または 4.5.x がインストールされていることを確認します。インストールされていない場合は、Microsoft の Web サイトからインストールします。
  • Windows PowerShell 3.0 または 4.0 がインストールされていることを確認します。インストールされていない場合は、Microsoft の Web サイトからインストールします。

.NET Frameworkバージョン確認

Powershellで下記コマンドを実行。

(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802

4.6.2以降が入ってるのでとりあえずOK。

インストールされている .NET Framework バージョンを確認する - .NET Framework
コード、regedit.exe、または PowerShell を使用して、Windows レジストリに対してクエリを実行することで、コンピューターにインストールされている .NET Framework のバージョンを検出します。

PowerShellバージョン確認

Powershellで下記コマンドを実行。

$PSVersionTable

5.1.17763.316だったのでとりあえずOK。

PowerShellギャラリー経由インストール

PowerCLIのインストール方法に、インストールパッケージを使うか、PowerShellギャラリーのリポジトリからインターネット経由でインストールするかの二通がありました。後者の方が簡単そうなので、インターネット経由でインストールしていきます。

PowerShell ギャラリーは、ダウンロードして利用できるスクリプト、モジュール、DSC リソースが含まれるパッケージ リポジトリです。

PowerShellを管理者として実行します。※諸事情でISE使ってますが、普通のPowerShellで大丈夫です。

下記のコマンドを実行します。

Install-Module VMware.PowerCLI

確認画面出たので「はい」をクリック。

また確認画面でしたので、「すべて続行」をクリック。

割と時間かかる。(3分くらい)

インストールが終わったので認識されているか確認します。※諸事情によりここからISEではなく普通のPowerShell使ってます。

Get-Module VMware* -ListAvailable

ちゃんと入ってるっぽい。

動作確認

PowerShellの実行ポリシーを確認。RemoteSigned / Unrestricted / Bypass であれば大丈夫です。

Get-ExecutionPolicy

Unrestricted / Bypassの場合は、下記コマンドでポリシーを変更します。

Set-ExecutionPolicy RemoteSigned

vCenterに接続します。

Connect-VIServer -Server 'vcsa70.test.lab' -User 'Administrator@vsphere.local' -Password 'パスワード'

Connect-VIServer -Server ‘vCenter-FQDN-or-IP’ -User ‘AdministratorUser’ -Password
‘Password’

※ ‘vCenter-FQDN-or-IP’ は接続先vCenterの情報として下さい
※ ‘AdministratorUser’ , ‘Password’ は接続用ユーザ名とパスワードを指定して下さい
※ 管理者権限でないユーザで接続した場合は、そのユーザの権限に基づいた内容のみが実行可能となります

証明書関係のエラーがでて接続できない・・・・。

Connect-VIServer : 2021/06/30 16:36:33 Connect-VIServer Error: Invalid server certificate. Use Set-PowerCLIConfiguration to set the valu
e for the InvalidCertificateAction option to Prompt if you’d like to connect once or to add a permanent exception for this server.
Additional Information: 機関 ‘vcsa70.test.lab’ との SSL/TLS のセキュリティで保護されているチャネルに対する信頼関係を確立できませんでした

発生場所 行:1 文字:1
+ Connect-VIServer -Server ‘vcsa70.test.lab’ -User ‘Administrator@vsphe …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) [Connect-VIServer]、ViSecurityNegotiationException
+ FullyQualifiedErrorId : Client20_ConnectivityServiceImpl_Reconnect_CertificateError,VMware.VimAutomation.ViCore.Cmdlets.Commands.C
onnectVIServer

-forceオプションをつけて実施。

Connect-VIServer -Server 'vcsa70.test.lab' -User 'Administrator@vsphere.local' -Password 'パスワード' -force

接続できました。

仮想マシンのリストを取得してみる。

Get-VM

取得できました。

使い終わったのでvCenterとの接続を切断しておきます。

Disconnect-VIServer -Server vcsa70.test.lab -Confirm:$False

切断できました。

おまけ:vCenterとの接続状態確認

PowerCLIでvCenterと接続状態かは下記コマンドで確認できます。

$global:DefaultVIServers

接続されているとき。

切断されているとき。

参考

https://blogs.vmware.com/vmware-japan/2021/02/tam-blog-powercli-01.html
https://code.vmware.com/web/tool/12.3.0/vmware-powercli
https://docs.vmware.com/jp/VMware-vSphere/7.0/com.vmware.esxi.install.doc/GUID-F02D0C2D-B226-4908-9E5C-2E783D41FE2D.html

まとめ

よし、とりあえず学ぶか(´・ω・`)

スポンサーリンク
アドセンス1
アドセンス1
ブログランキング・にほんブログ村へ

シェアする

フォローする