How to access and utilize ESXCLI from PowerCLI
Home Facebook Twitter LinkedIn Home

- 2 minutes read - 410 words
Related Categories: #Virtualization & Cloud

Purpose

Today I am going to talk about an interesting feature of PowerCLI. Through PowerCLI you can utilize the full functionalities of ESXCLI commands. Question is why would you like to access Esxcli commands from PowerCLI cmdlets. The reason is there are certain tasks which can easily be done using Esxcli cmdlets because there are no simple cmdlets available in PowerCLI for this.

For example, if you want to re-signature a vmfs datastore, it is easier to use Esxcli than to use PowerCLI and vSphere API’s. Besides using Esxcli very easily provides access to low level information about esxi server.

To access the Esxcli commands, first we need to connect to an Esxi server directly and then use the Get-EsxCli cmdlet to access the ESXCli commands. I will first connect to a Esxi server.

PS C:> Connect-VIServer esxi1.lab.com -Username root -Password abcxyz

Next we will store the information in a variable $esxinfo.

PS C:> $esxinfo = Get-EsxCli -VMHost Esxi1.lab.com

So we have stored ESX CLI cmdlets in the variable. Now if we check the variable we can get a list of all the cmdlets.

	PS C:> $esxinfo

	=====================

	EsxCli: esxi1.lab.com
  	 Elements:
   	---------
   	device
   	elxnet
   	esxcli
   	fcoe
   	graphics
  	hardware
   	iscsi
   	network
   	rdma
   	sched
   	software
   	storage
   	system
   	vm
   	vsan

Ok. So good so far. Since we got the list, what to do with it? To dig deeper, we need to query further. For example, if we need to find the information about hardware, we need to query it.

	PS C:> $esxinfo.hardware
	
	=======================
	
	EsxCliElement: hardware
	
   	Elements:
  	 ---------
   	bootdevice
   	clock
   	cpu
   	ipmi
   	memory
   	pci
   	platform
   	smartcard
   	trustedboot

As can be seen from above that we can get information about the listed parameters. For example, if we want to know about the platform we can simply use it with do notation.

	PS C:> $esxinfo.hardware.platform

	=======================
	EsxCliElement: platform

   	Methods:
  	 --------

   	PlatformGet get()

We can see that there is only one method get() defined in this parameter. So we can use this to get the information about the platform.

	PS C:> $esxinfo.hardware.platform.get()

	IPMISupported : false

	ProductName   : VMware Virtual Platform

	SerialNumber  : VMware-56 4d a2 7e 02 05 10 2b-77 8b 50 eb bc b8 0b 78

	UUID          : 0x56 0x4d 0xa2 0x7e 0x2 0x5 0x10 0x2b 0x77 0x8b 0x50 0xeb 0xbc 0xb8 0xb 0x78

	VendorName    : VMware, Inc.

Likewise you can use different parameters to get or set many aspects of Esxi servers which you can do from ESX CLI cmdlets, but this time from PowerCLI.