(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【PowerCLI】ESXiに接続してゲスト仮想マシンの情報一覧を取得する

スポンサーリンク

はじめに

PowerCLIにてESXiに接続を行い、仮想マシンのホスト名やIPアドレス、OSバージョンを一気に取得するコマンドについて紹介します。

環境情報
  • VMware ESXi 6.7
  • VMware.PowerCLI 12.0

ESXiと接続する

Powershellにて以下コマンドで接続が可能です。Server/User/PasswordにはESXiにログインするための情報を指定します。

PS C:\Users\Administrator> Connect-VIServer -Server XX-User xxxx -Password xxxx -Force

尚、Forceを付与している理由は以下のエラーを回避するためです。

Connect-VIServer : xx  Connect-VIServer                Error: Invalid server certificate. Use Set-PowerCLIConfiguration to set the value for the InvalidCertificateAction option to Prompt if you'd like to connect once or to add a permanent exception for this server.
Additional Information: 機関 'xx' との SSL/TLS のセキュリティで保護されているチャネルに対する信頼関係を確立できませんでした。
発生場所 行:1 文字:1
+ Connect-VIServer -Serve xx -User xx -Password xx
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) [Connect-VIServer]、ViSecurityNegotiationException
    + FullyQualifiedErrorId : Client20_ConnectivityServiceImpl_Reconnect_CertificateError,VMware.VimAutomation.ViCore.Cmdlets.Commands.ConnectVIServer

ログインに成功すると以下のようにIPアドレス、ポート番号、ユーザが表示されます。

Name                           Port  User
----                           ----  ----
10.1.2.3                  443   root

ESXiにログインした状態を切断する際は以下コマンドを押下します。

PS C:\Users\Administrator> Disconnect-VIServer -Confirm:$False

仮想マシンの情報を取得する

以下のワンライナーでカレントディレクトリにcsvファイルが作成されます。

PS C:\Users\Administrator> get-vm | get-vmguest | select | export-csv hoge.csv -encoding Default
警告: GuestId property is deprecated. Please use ConfiguredGuestId and RuntimeGuestId properties instead.

例えばWindowsとLinuxが1台あった場合のファイルは以下のような形式となります。

#TYPE VMware.VimAutomation.ViCore.Impl.V1.VM.Guest.VMGuestImpl
"OSFullName","IPAddress","State","Disks","HostName","Nics","ScreenDimensions","VmId","VM","VmUid","VmName","Uid","GuestId","ConfiguredGuestId","RuntimeGuestId","ToolsVersion","ExtensionData","GuestFamily"
"Microsoft Windows Server 2016 (64-bit)","System.String[]","Running","VMware.VimAutomation.ViCore.Impl.V1.VM.Guest.DiskInfoImpl[]","full_hostname1","VMware.VimAutomation.ViCore.Impl.V1.VM.Guest.NicInfoImpl[]","{Width=1296, Height=610}","VirtualMachine-34","hostname1","/VIServer=root@X.X.X.X:443/VirtualMachine=VirtualMachine-34/","hostname1","/VIServer=root@X.X.X.X:443/VirtualMachine=VirtualMachine-34/VMGuest=/","windows9Server64Guest","windows9Server64Guest","windows9Server64Guest","10.2.0","VMware.Vim.GuestInfo","windowsGuest"
"Red Hat Enterprise Linux 7 (64-bit)","System.String[]","Running","VMware.VimAutomation.ViCore.Impl.V1.VM.Guest.DiskInfoImpl[]","full_hostname2","VMware.VimAutomation.ViCore.Impl.V1.VM.Guest.NicInfoImpl[]","{Width=1280, Height=768}","VirtualMachine-53","hostname2","/VIServer=root@X.X.X.X:443/VirtualMachine=VirtualMachine-53/","hostname2","/VIServer=root@X.X.X.X:443/VirtualMachine=VirtualMachine-53/VMGuest=/","rhel7_64Guest","rhel7_64Guest","rhel7_64Guest","10.2.5","VMware.Vim.GuestInfo","linuxGuest"

簡易的な情報を確認したい場合(OSが起動しているか否か&ホスト名)であれば以下のコマンドが利用できます。

PS C:\Users\Administrator> get-vm | select

Name                 PowerState Num CPUs MemoryGB
----                 ---------- -------- --------
hostname1             PoweredOn  1        4.000
hostname2          PoweredOn  1        10.000

終わりに

Windows端末からESXiで動作している仮想マシン群を取得できるコマンドの紹介でした。

以上、ご参考になれば幸いです。