PowerCLI Reimagined: Deep Dive into VCF PowerCLI 9.0

Introduction

PowerCLI has long established itself as one of the most trusted and widely adopted automation tools across VMware environments. With over 1.5 to 2 million downloads annually, its impact is significant and measurable. (You can verify these numbers on the PowerShell Gallery.)

The effectiveness of PowerCLI is rooted in two key strengths:

  1. PowerShell Foundation – PowerCLI offers a powerful CLI experience with access to rich programming constructs.
  2. API Abstraction – It simplifies VMware’s complex APIs into consistent and intuitive cmdlets using the Verb-Noun syntax.

With the release of VCF PowerCLI 9.0 (formerly VMware PowerCLI), this critical tool evolves in name, performance, and functionality to align with the VMware Cloud Foundation (VCF) lifecycle.


What’s New in VCF PowerCLI 9.0

This release introduces:

  • Performance enhancements
  • New modules (NSX VPC & SDDC Manager)
  • Improved usability and SDK
  • Global Authorization API support
  • Numerous bug fixes

Refer to the VCF 9.0 Release Notes for the full list.

Highlights

FeatureDescription
PerformanceRewritten cmdlets using .NET for faster execution
NSX VPC ModuleCreate & manage Virtual Private Clouds
SDDC Manager ModuleInteract with SDDC components directly via PowerCLI
PowerCLI SDK EnhancementsStreamlined experience with improved discovery cmdlets
Global Authorization APIsManage roles, permissions, and privileges programmatically

Performance Enhancements

Script vs. Compiled Cmdlets

PowerCLI cmdlets are developed either as:

  • Script-based: Flexible, but interpreted at runtime (slower)
  • .NET-based: Precompiled, statically typed classes (faster)

On Windows Server 2025:

  • VMware.PowerCLI import time: ~1 min
  • VCF.PowerCLI: ~18 seconds

Repackaged Submodules

Fewer .psm1, .psd1, and .dll files mean:

  • Less memory usage
  • Faster module imports
  • Better I/O performance

NSX Virtual Private Cloud (VPC) Module

What is a VPC?

A VPC is a logically isolated subnet grouped under an NSX Project.

Subnet TypeDescription
Private – VPCIsolated inside VPC only (requires NAT for external access)
Private – Transit GatewayEnables inter-VPC connectivity without NAT
PublicAccessible externally and from other VPCs

Example: Create VPC for App “Holodeck”

$subnetRequired = @('Web','App','DB')
New-Vpc -Name "Holodeck-Vpc" -PrivateIp "192.168.0.0/24" -Description "PowerCLI 9.0 Demo, VPC!"
$vpc = Get-Vpc -Name "Holodeck-Vpc"

foreach($subnet in $subnetRequired) {
   New-VpcSubnet -Vpc $vpc -Name $subnet -AccessMode Private -DhcpMode Server
}

Get-VM -Name 'HoloDeck-vpc-App' | Get-NetworkAdapter | Set-NetworkAdapter -Subnet 'App' -Confirm:$false
Get-VM -Name 'HoloDeck-vpc-Web' | Get-NetworkAdapter | Set-NetworkAdapter -Subnet 'Web' -Confirm:$false
Get-VM -Name 'HoloDeck-vpc-DB' | Get-NetworkAdapter | Set-NetworkAdapter -Subnet 'DB' -Confirm:$false

SDDC Manager Module

Getting Started

Connect-VcfSddcManager -Server sddcmanager-a.site-a.vcf.lab -User 'administrator@vsphere.local'

Core Cmdlets

Get-SddcCluster
Get-SddcDomain
Get-SddcHost
Get-SddcVcenter

For full API parity, use the VMware.Sdk.Vcf.SddcManager module.


PowerCLI SDK Enhancements

Why It Matters

When VCF releases a new feature, high-level cmdlets can lag. The SDK fills that gap with auto-generated cmdlets from OpenAPI specs.

Cmdlet Syntax

VerbPurpose
Initialize-Client-side data structure setup
Invoke-Executes server-side API operations

Example: Create Tag

$TaggingCategoryCreateSpec = Initialize-TaggingCategoryCreateSpec -Name "Holodeck" -Description "Tag category for folders" -Cardinality "SINGLE" -AssociableTypes "Folder"
$tagCategoryID = Invoke-CreateCategory -TaggingCategoryCreateSpec $TaggingCategoryCreateSpec

$TaggingTagCreateSpec = Initialize-TaggingTagCreateSpec -Name "Holodeck-App" -Description "App tag" -CategoryId $tagCategoryID
$tagID = Invoke-CreateTag -TaggingTagCreateSpec $TaggingTagCreateSpec

Discovery Cmdlets

CmdletModule
Get-NsxOperationVMware.Sdk.Nsx.Policy
Get-SrmOperationVMware.Sdk.Srm
Get-VcfInstallerOperationVMware.Sdk.Vcf.Installer
Get-VcfOpsOperationVMware.Sdk.Vcf.Ops
Get-VcfSddcManagerOperationVMware.Sdk.Vcf.SddcManager
Get-vSphereOperationVMware.Sdk.vSphere

Global Authorization API Bindings

ComponentCmdletDescription
PrivilegesInvoke-VcenterAuthorizationPrivilegesListLists all vCenter privileges
RolesInvoke-VcenterAuthorizationRolesCreateCreates new roles
PermissionsInvoke-VcenterAuthorizationPermissionsCreateGrants roles to users/groups

This API support enables end-to-end programmatic management of vSphere roles and privileges—a long-requested feature.


Bug Fixes

Numerous bug fixes have been included in this release. For complete details, refer to the Release Notes.


Installation & Upgrade

As this is a renamed module:

Uninstall-Module VMware.PowerCLI
Install-Module VCF.PowerCLI

Refer to official documentation for upgrade best practices.


Conclusion

VCF PowerCLI 9.0 delivers on multiple fronts:

  • Performance and architectural optimizations
  • Expanded support for VPC and SDDC management
  • Immediate API access via SDK
  • Automation for vSphere role management

Whether you’re managing traditional vSphere clusters or full VCF deployments, this release ensures you have a modern, efficient, and reliable toolset.


Resources

Subscribe to the channel: youtube.be/@AngryAdmin 🔥

🚨Dive into my blog: angrysysops.com

🚨Snapshots 101: a.co/d/fJVHo5v

🌐Connect with us:

💻Website: angrysysops.com

🔥vExpert info: vExpert Portal

Please leave the comment