Getting Started with VMware PowerCLI

A simple guide to getting started with powercli

PowerCLI is a default scripting tool from VMware used to manage and automate the entire portfolio of VMware products, this is based on Powershell.

The easiest way to install powercli module is by running this command on your powershell 

PS> Install-Module VMware.PowerCLI

Import powercli  module using the below command

Import-Module VMware.PowerCLI

Verify if powercli  modules are loading correctly  using the below command

Get-Module -ListAvailable VMware*

Connect to vCenter

We can now attempt to use PowerCLI to connect to vCenter or ESX with the Connect-VIServer cmdlet.

PS> Connect-VIServer <FQDN of vCenter Server or ESXi Host>

On the powershell ISE, we could create a script as shown.

Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
Import-Module VMware.VimAutomation.Core
Import-Module VMware.VimAutomation.core
Import-MOdule VMware.VimAutomation.Common
$credVC = get-credential administrator@vsphere.local
#$credESX = get-credential root
$vc = Connect-VIServer -Server <>-Credential $credVC

 

Connect-VIServer -Server <IP of DNS name of Vcenter> -user <NETBIOSDomain\username> -password <password>

 

 

# Ensure TLS 1.2

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

 

# Trust PSGallery

Set-PSRepository -Name PSGallery -InstallationPolicy Trusted -ErrorAction SilentlyContinue

 

# Install full VCF PowerCLI bundle

Install-Module -Name VCF.PowerCLI -Scope AllUsers -AllowClobber -SkipPublisherCheck -Force

 

# Disable CEIP prompt

Set-PowerCLIConfiguration -Scope AllUsers -ParticipateInCEIP $false -Confirm:$false

 

# Import all VMware & VCF modules

$modules = Get-Module -ListAvailable | Where-Object { $_.Name -like “VMware.*” -or $_.Name -like “VCF.*” } |

    Select-Object -ExpandProperty Name

 

foreach ($m in $modules) {

    try {

        Import-Module $m -ErrorAction Stop

        Write-Host “Imported: $m” -ForegroundColor Green

    } catch {

        Write-Host “Failed: $m” -ForegroundColor Red

    }

}

 

# Summary

Write-Host “`n=== Loaded Modules ===” -ForegroundColor Cyan

Get-Module | Where-Object { $_.Name -like “VMware.*” -or $_.Name -like “VCF.*” } |

    Select-Object Name, Version | Sort-Object Name | Format-Table -AutoSize

 

# Show PSModulePath

Write-Host “`n=== Current PSModulePath ===” -ForegroundColor Cyan

$env:PSModulePath -split ‘;’ | ForEach-Object { Write-Host ”  $_” -ForegroundColor DarkGray }

(Visited 202 times, 1 visits today)

By C A Thomas

Chinchu A. Thomas is an Infrastructure Analyst specializing in Microsoft Azure, the Microsoft 365 suite, AWS, and Windows infrastructure management products.

Leave a Reply