はじめに
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で動作している仮想マシン群を取得できるコマンドの紹介でした。
以上、ご参考になれば幸いです。