以前、こんなポストをしてみました。
PowerCLI から esxcli を実行する。(Get-EsxCli)
Get-EsxCli で情報取得することで、esxcli で取得できる情報を PowerShell で扱えるようになるので、
PowerShell ユーザにとっては結構便利ではないかと思います。
たとえば、esxcli でストレージデバイスの一覧 「esxcli storage core device list」 を取得してみます。
esxcli で取得できる情報は、PowerCLI のコマンドレットでは取得しにくいものが多いのですが、
これが PowerShell で扱えるようになります。
~ # uname -n
hv55h01.godc.lab
~ # vmware -vl
VMware ESXi 5.5.0 build-2456374VMware ESXi 5.5.0 Update 2
~ # esxcli storage core device list
t10.ATA_____ADATA_SX900_____________________________2E4820021942________
Display Name: Local ATA Disk (t10.ATA_____ADATA_SX900_____________________________2E4820021942________)
Has Settable Display Name: true
Size: 488386
Device Type: Direct-Access
Multipath Plugin: NMP
Devfs Path: /vmfs/devices/disks/t10.ATA_____ADATA_SX900_____________________________2E4820021942________
Vendor: ATA
Model: ADATA SX900
Revision: 5.8.
SCSI Level: 5
Is Pseudo: false
Status: on
Is RDM Capable: false
Is Local: true
Is Removable: false
Is SSD: true
Is Offline: false
Is Perennially Reserved: false
Queue Full Sample Size: 0
Queue Full Threshold: 0
Thin Provisioning Status: yes
Attached Filters:
VAAI Status: unknown
Other UIDs: vml.01000000003245343832303032313934322020202020202020414441544120
Is Local SAS Device: false
Is USB: false
Is Boot USB Device: false
No of outstanding IOs with competing worlds: 32
(以下省略)
PowerCLI の、Get-EsxCli で ESXi から情報取得してみます。
※今回は、すでに Connect-VIServer で vCenter に接続済みです。
今回、esxcli で情報取得する ESXi はこれです。
PowerCLI> Get-VMHost hv55h01.godc.lab | select Name, Version, Build, Manufacturer, Model| ft -AutoSize
Name Version Build Manufacturer Model
---- ------- ----- ------------ -----
hv55h01.godc.lab 5.5.0 2456374 HP ProLiant Micro Server
Get-EsxCli で esxcli が実行できます。
PowerCLI> (Get-VMHost hv55h01.godc.lab | Get-EsxCli)
========================
EsxCli: hv55h01.godc.lab
Elements:
---------
device
esxcli
fcoe
graphics
hardware
iscsi
network
sched
software
storage
system
vm
vsan
ざっくりですが、
「esxcli storage core device list」 と同様の情報を取得できることがわかります。
PowerCLI> (Get-VMHost hv55h01.godc.lab | Get-EsxCli).storage.core.device.list() | gm | select Name
Name
----
AttachedFilters
DevfsPath
Device
DeviceType
DisplayName
HasSettableDisplayName
IsBootUSBDevice
IsLocal
IsLocalSASDevice
IsOffline
IsPerenniallyReserved
IsPseudo
IsRDMCapable
IsRemovable
IsSSD
IsUSB
Model
MultipathPlugin
NoofoutstandingIOswithcompetingworlds
OtherUIDs
QueueFullSampleSize
QueueFullThreshold
Revision
SCSILevel
Size
Status
ThinProvisioningStatus
VAAIStatus
Vendor
Equals
GetHashCode
GetType
ToString
そして、PowerShell の Select-Object(select)や Format-Table(ft)で、
コマンドの出力結果を抽出 / 加工することができたりします。
PowerCLI> (Get-VMHost hv55h01.godc.lab | Get-EsxCli).storage.core.device.list() | sort Vendor,Model | ft -AutoSize Vendor, Model, Size, IsUSB, IsBoot USBDevice, IsSSD, Device
Vendor Model Size IsUSB IsBootUSBDevice IsSSD Device
------ ----- ---- ----- --------------- ----- ------
ATA ADATA SX900 488386 false false true t10.ATA_____ADAT...
ATA Hitachi HDS72101 953869 false false false t10.ATA_____Hita...
ATA Hitachi HDS72101 953869 false false false t10.ATA_____Hita...
ATA Hitachi HDS72101 953869 false false false t10.ATA_____Hita...UFD 2.0 Silicon-Power4G 3824 true true false mpx.vmhba32:C0:T...
取得した結果を PowerShell で扱えるだけでなく、
ESXi ではなく vCenter に接続することで esxcli コマンドが実行できるため、
セキュリティ対策などで ESXi への直接ログインを減らしたい場合などにも
Get-EsxCli は有効かもしれません。
以上、Get-EsxCli についてでした。