How to access and utilize ESXCLI from PowerCLI

Related Categories: #Virtualization & Cloud #Automation         Info-Standard 2015-10-25

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.

Comments

Table of Contents