無償版の ESXi の場合は、PowerCLI での ESXi/VM の操作ができません。
しかし、ESXi からの情報取得であれば可能であり、
情報を参照するだけでも PowerCLI は便利だと思います。
ただ、PowerCLI(PowerShell)に慣れていない場合に
単純にコマンド単体を実行して表示するだけという もったいないケースがあるようです。
すこし工夫をするだけで だいぶ便利になるので
いくつか役立ちそうなことを紹介してみようと思います。
今回の PowerCLI のバージョンは、5.5 R2 です。
PowerCLI C:\> Get-PowerCLIVersion
PowerCLI Version
----------------
VMware vSphere PowerCLI 5.5 Release 2 build 1671586
---------------
Snapin Versions
---------------
VMWare AutoDeploy PowerCLI Component 5.5 build 1598391
VMWare ImageBuilder PowerCLI Component 5.5 build 1598391
VMware License PowerCLI Component 5.5 build 1265954
VMware VDS PowerCLI Component 5.5 build 1671576
VMware vSphere PowerCLI Component 5.5 build 1671576
有償版の ESXi を使用している場合は、ほぼ必ず vCenter がいるので
PowerCLI からは vCenter に接続します。
一方、
無償版 ESXi を使用してる場合や、まだ vCenter がない場合は ESXi に直接接続します。
※今回は、hv55n1 ~ hv55n4 という 4台のESXi に接続しています。
PowerCLI C:\> $esxi = "hv55n1.vmad.local","hv55n2.vmad.local","hv55n3.vmad.local","hv55n4.vmad.local"
PowerCLI C:\> Connect-VIServer -Server $esxi -User root -Password ********
Name Port User
---- ---- ----
hv55n1.vmad.local 443 root
hv55n2.vmad.local 443 root
hv55n3.vmad.local 443 root
hv55n4.vmad.local 443 root
ESXi の情報を取得するとき、
ただ Get-VMHost を実行しただけだと下記のようになります。
※「警告: 3 個の列が~」は、PowerCLI の画面幅が小さい(デフォルトの80のまま)ためです。
PowerCLI C:\> Get-VMHost
警告: 3 個の列が表示に収まらないため、削除されました。
Name ConnectionState PowerState NumCpu CpuUsageMhz CpuTotalMhz
---- --------------- ---------- ------ ----------- -----------
hv55n1.vmad.local Connected PoweredOn 2 189 3594
hv55n3.vmad.local Connected PoweredOn 2 267 3594
hv55n2.vmad.local Connected PoweredOn 2 719 3594
hv55n4.vmad.local Connected PoweredOn 2 439 3594
デフォルトだと、大した情報は表示されていませんが、
実際は、詳細情報を取得できます。
PowerCLI C:\> Get-VMHost | Get-Member
TypeName: VMware.VimAutomation.ViCore.Impl.V1.Inventory.VMHostImpl
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
ApiVersion Property System.String ApiVersion {get;}
Build Property System.String Build {get;}
ConnectionState Property VMware.VimAutomation.ViCore.Types.V1.Host.V...
CpuTotalMhz Property System.Int32 CpuTotalMhz {get;}
CpuUsageMhz Property System.Int32 CpuUsageMhz {get;}
CustomFields Property System.Collections.Generic.IDictionary`2[[S...
DiagnosticPartition Property VMware.VimAutomation.ViCore.Types.V1.Host.V...
ExtensionData Property System.Object ExtensionData {get;}
FirewallDefaultPolicy Property VMware.VimAutomation.ViCore.Types.V1.Host.V...
HyperthreadingActive Property System.Boolean HyperthreadingActive {get;}
Id Property System.String Id {get;}
IsStandalone Property System.Boolean IsStandalone {get;}
LicenseKey Property System.String LicenseKey {get;}
Manufacturer Property System.String Manufacturer {get;}
MaxEVCMode Property System.String MaxEVCMode {get;}
MemoryTotalGB Property System.Decimal MemoryTotalGB {get;}
MemoryTotalMB Property System.Decimal MemoryTotalMB {get;}
MemoryUsageGB Property System.Decimal MemoryUsageGB {get;}
MemoryUsageMB Property System.Decimal MemoryUsageMB {get;}
Model Property System.String Model {get;}
Name Property System.String Name {get;}
NetworkInfo Property VMware.VimAutomation.ViCore.Types.V1.Host.N...
NumCpu Property System.Int32 NumCpu {get;}
Parent Property VMware.VimAutomation.ViCore.Types.V1.Invent...
ParentId Property System.String ParentId {get;}
PowerState Property VMware.VimAutomation.ViCore.Types.V1.Host.V...
ProcessorType Property System.String ProcessorType {get;}
State Property VMware.VimAutomation.ViCore.Types.V1.Host.V...
StorageInfo Property VMware.VimAutomation.ViCore.Types.V1.Host.S...
TimeZone Property VMware.VimAutomation.ViCore.Types.V1.Host.V...
Uid Property System.String Uid {get;}
Version Property System.String Version {get;}
VMSwapfileDatastore Property VMware.VimAutomation.ViCore.Types.V1.Datast...
VMSwapfileDatastoreId Property System.String VMSwapfileDatastoreId {get;}
VMSwapfilePolicy Property System.Nullable`1[[VMware.VimAutomation.ViC...
そこで、Select-Object でデフォルトでは表示されないプロパティを指定すれば
「インストールされている ESXi の Build 番号まで揃っているか」
などの情報も確認することができます。
※「Format-Table -AutoSize」により、表形式で幅を自動調整しました。
※「Select-Object *」とすれば、すべてのプロパティを表示できます。
PowerCLI C:\> Get-VMHost | Select-Object Name,Version,Build | Format-Table -AutoSize
Name Version Build
---- ------- -----
hv55n1.vmad.local 5.5.0 1623387
hv55n3.vmad.local 5.5.0 1623387
hv55n4.vmad.local 5.5.0 1623387
hv55n2.vmad.local 5.5.0 1623387
また、PowerCLI で情報取得すると、
必ずしも同じ順番で結果が表示されるとは限りません。
そこで Sort-Object で Name 列によって昇順で並べて表示してみます。
PowerCLI C:\> Get-VMHost | Sort-Object Name
警告: 3 個の列が表示に収まらないため、削除されました。
Name ConnectionState PowerState NumCpu CpuUsageMhz CpuTotalMhz
---- --------------- ---------- ------ ----------- -----------
hv55n1.vmad.local Connected PoweredOn 2 370 3594
hv55n2.vmad.local Connected PoweredOn 2 952 3594
hv55n3.vmad.local Connected PoweredOn 2 479 3594
hv55n4.vmad.local Connected PoweredOn 2 718 3594
最後に、ESXi の物理的な CPU コア数と、メモリ容量を表示しみます。
メモリ容量が微妙な小数で表示されました。
※「ft」は「Format-Table」の短縮形です。
PowerCLI C:\> Get-VMHost | select Name,Version,Build,NumCpu,MemoryTotalGB | ft -AutoSize
Name Version Build NumCpu MemoryTotalGB
---- ------- ----- ------ -------------
hv55n1.vmad.local 5.5.0 1623387 2 3.999500274658203125
hv55n4.vmad.local 5.5.0 1623387 2 3.999500274658203125
hv55n3.vmad.local 5.5.0 1623387 2 3.999500274658203125
hv55n2.vmad.local 5.5.0 1623387 2 3.999500274658203125
このような場合、PowerShell の型変換を使用すると
うまい具合に調節して、結果を見やすくすることができます。
PowerCLI C:\> Get-VMHost | select Name,Version,Build,NumCpu,{[int]$_.MemoryTotalGB} | ft -AutoSize
Name Version Build NumCpu [int]$_.MemoryTotalGB
---- ------- ----- ------ ---------------------
hv55n3.vmad.local 5.5.0 1623387 2 4
hv55n1.vmad.local 5.5.0 1623387 2 4
hv55n4.vmad.local 5.5.0 1623387 2 4
hv55n2.vmad.local 5.5.0 1623387 2 4
メモリ容量の列名が式になってしまったので、
列名も PowerShell の機能で「MemGB」に変更してみます。
PowerCLI C:\> Get-VMHost | select Name,Version,Build,NumCpu,@{Name="MemGB";Expression={[int]$_.MemoryTotalGB}} | ft -AutoSize
Name Version Build NumCpu MemGB
---- ------- ----- ------ -----
hv55n1.vmad.local 5.5.0 1623387 2 4
hv55n3.vmad.local 5.5.0 1623387 2 4
hv55n4.vmad.local 5.5.0 1623387 2 4
hv55n2.vmad.local 5.5.0 1623387 2 4
これまでの工夫をまとめてみました。
※ここでは、さらに省略形にしています。
PowerCLI C:\> Get-VMHost | select Name,Version,Build,NumCpu,@{N="MemGB";E={[int]$_.MemoryTotalGB}} | sort Name | ft -AutoSize
Name Version Build NumCpu MemGB
---- ------- ----- ------ -----
hv55n1.vmad.local 5.5.0 1623387 2 4
hv55n2.vmad.local 5.5.0 1623387 2 4
hv55n3.vmad.local 5.5.0 1623387 2 4
hv55n4.vmad.local 5.5.0 1623387 2 4
以上です。いまさらですが、PowerCLI の参照コマンド超入門でした。