どうも、Tです。
vSphere環境をコマンドでごにょごにょする仕事がありそうなのでPowerCLIインストールしてみました。
目次
やりたいこと
vSphere環境をコマンドで操作したい。
環境
- vSphere7.0u2
- Windows Server2019
なぜPowerCLI?
ぶっちゃコマンドで操作できれば何でもよかったので調べてるところ、Power CLIとvSphre CLIの2つがあってどっちに使用かなぁと思って調べてて下記の経緯からPower CLIを使うことにしました。
vSphere7.0でvSphere CLIが終わった
はい、色々変更の多いvSphere7.0さんですが、vSphere CLIも配布が終わってました。
でもよく読むと下記のようにesxcliとPerl SDKに分かれて使えるような記述あってもう少し調べました。
vSphere 7.0 以降では、vSphere CLI パッケージはリリースされず、販売が終了します。ただし、vSphere CLI のすべての既存の機能は、esxcli および Perl SDK などのより API 中心のツールを使用してサポートされます。
はい。7.0 U2 でPerl SDKが非推奨になったとのこです。
![](https://t-dilemma.info/wp-content/uploads/simplicity-cache/c15188ec68bad3cce17c9281dcc23878.jpg)
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://t-dilemma.info/wp-content/uploads/simplicity-cache/c15188ec68bad3cce17c9281dcc23878.jpg)
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。
![](https://t-dilemma.info/wp-content/uploads/simplicity-cache/41c4e37c9d406479262f5b366c94c927.png)
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://t-dilemma.info/wp-content/uploads/simplicity-cache/c15188ec68bad3cce17c9281dcc23878.jpg)
まとめ
よし、とりあえず学ぶか(´・ω・`)