How to Install and Update VCF PowerCLI 9.1 on Windows, macOS, and Linux

TL;DR

PowerCLI is now distributed through the VCF.PowerCLI package. The older VMware.PowerCLI package is deprecated, although many familiar cmdlets and underlying VMware.* modules remain in use.

For a new installation, use:

Install-Module -Name VCF.PowerCLI `
-Scope CurrentUser `
-Repository PSGallery

For an existing VMware.PowerCLI installation, audit scripts for explicit Import-Module VMware.PowerCLI statements, prefer a clean migration where practical, and use -AllowClobber and -SkipPublisherCheck only when resolving the documented upgrade conflicts.

VCF PowerCLI 9.1 can also be installed offline by downloading the complete Broadcom ZIP package or staging the package and its dependencies with Save-Module. Offline installations cannot be updated with Update-Module. They must be refreshed by deploying a newer offline bundle.

This guide targets VCF.PowerCLI version 9.1.0.25380678.

Introduction

PowerCLI installation used to begin with one familiar package name:

Install-Module -Name VMware.PowerCLI

That command is now outdated. PowerCLI continues as VCF.PowerCLI, aligning the automation toolkit with VMware Cloud Foundation while preserving the cmdlets administrators already use for vCenter, ESXi, vSAN, NSX, Cloud Director, and related platforms.

The package transition is straightforward on a clean workstation. It becomes more complicated on long-lived administration systems where several PowerCLI versions, module paths, script imports, service accounts, and manually copied modules may already exist.

A successful upgrade therefore requires more than replacing one package name. You need to determine what is installed, where it is installed, how scripts import it, which package manager owns it, and whether the system can reach the PowerShell Gallery.

This article provides a complete installation and update workflow for Windows, macOS, and Linux. It also covers migration from VMware.PowerCLI, offline deployment, version verification, certificate configuration, and the most common installation failures.

What You Will Accomplish

By the end of this guide, you will be able to:

Identify existing VMware.PowerCLI and VCF.PowerCLI installations.

Install VCF PowerCLI 9.1 on Windows, macOS, and Linux.

Migrate scripts from the deprecated top-level package.

Install VCF PowerCLI on disconnected systems.

Update gallery-managed installations correctly.

Verify the top-level package and its child modules.

Confirm which copy of a module PowerShell is loading.

Test PowerCLI by connecting to a vCenter Server.

Troubleshoot command conflicts, publisher changes, module-path problems, and offline update failures.

Understanding the VMware.PowerCLI to VCF.PowerCLI Transition

The most important change is the name of the top-level distribution package.

ComponentPrevious stateCurrent stateRequired actionInstallation packageVMware.PowerCLIVCF.PowerCLIUpdate install and update commandsExplicit top-level importImport-Module VMware.PowerCLIImport-Module VCF.PowerCLIUpdate scripts and profilesCommon cmdletsConnect-VIServer, Get-VM, Get-ClusterSame cmdlet namesUsually no cmdlet rewrite requiredChild modulesPrimarily VMware.*Many remain VMware.*Do not rename child-module imports without checkingTop-level version13.3 release family9.1 release familyValidate the package separately from dependenciesCode-signing publisherVMware-era signingBroadcom signingExisting systems may report a publisher mismatch

Broadcom describes VCF.PowerCLI as the continuation of VMware.PowerCLI. That does not mean every existing environment can be upgraded without review.

Most scripts that simply call PowerCLI cmdlets should continue to operate. Scripts that explicitly import VMware.PowerCLI, validate package names, pin old versions, or build runners from the deprecated package must be updated.

Many child modules still use names such as:

VMware.VimAutomation.Core
VMware.VimAutomation.Storage
VMware.VimAutomation.Nsxt
VMware.VimAutomation.Sdk

This is expected. The move to VCF.PowerCLI does not mean every module and cmdlet has been renamed.

The Installation and Migration Workflow

The workflow below separates fresh installation, package migration, updating, and offline deployment.

The point to notice is that installation method determines update method. A gallery-managed module can use the package manager for updates. A module copied into a PowerShell module path must be updated by replacing or supplementing the offline files.

Prerequisites and Assumptions

VCF.PowerCLI 9.1 lists PowerShell 5.1 as its minimum PowerShell version. PowerShell 7 is the better baseline for new deployments because the same runtime can be used across Windows, macOS, and Linux.

Before installing or updating PowerCLI, confirm:

PowerShell 7 is installed on macOS and Linux.

Windows is using either Windows PowerShell 5.1 or PowerShell 7.

The account has permission to write to the selected module path.

Internet-connected systems can reach the PowerShell Gallery.

Proxy and TLS controls permit PowerShell package downloads.

Offline systems have an approved artifact-transfer process.

Existing automation jobs are stopped before modules are removed or replaced.

A representative vCenter endpoint is available for functional validation.

Existing scripts and PowerShell profiles have been backed up or committed to source control.

Use CurrentUser scope unless there is a defined requirement for a shared AllUsers installation. User-scoped installations reduce the need for elevation and make it easier to isolate administrator and service-account dependencies.

Inspect the Existing PowerCLI Installation

Do not uninstall anything until you understand the current state.

Start by identifying the PowerShell runtime:

$PSVersionTable |
Select-Object PSVersion, PSEdition, Platform, OS

Then inspect the module paths searched by the current PowerShell process:

$env:PSModulePath -split [IO.Path]::PathSeparator

The order matters. PowerShell can find several versions of the same module in different directories. A newer package can be installed correctly while an older package is still loaded from another path.

Check for package-manager records:

‘VMware.PowerCLI’, ‘VCF.PowerCLI’ |
ForEach-Object {
Get-InstalledModule -Name $_ `
-AllVersions `
-ErrorAction SilentlyContinue
} |
Sort-Object Name, Version -Descending |
Select-Object Name, Version, InstalledLocation

Now check everything PowerShell can discover, including manually copied modules:

Get-Module -Name VMware.PowerCLI, VCF.PowerCLI `
-ListAvailable |
Sort-Object Name, Version -Descending |
Select-Object Name, Version, ModuleBase

These two checks answer different questions.

Get-InstalledModule reports modules installed through PowerShellGet. Get-Module -ListAvailable searches the active module paths and can find copied offline modules that have no package-manager record.

Also inspect loaded modules:

Get-Module VMware.*, VCF.PowerCLI |
Sort-Object Name |
Select-Object Name, Version, ModuleBase

If PowerCLI modules are already loaded, close PowerShell before removing or replacing them. Updating files does not replace modules already loaded into the current process.

Install VCF PowerCLI 9.1 on Windows

Open PowerShell 7 or Windows PowerShell.

A CurrentUser installation normally does not require an elevated console:

Install-Module -Name VCF.PowerCLI `
-Scope CurrentUser `
-Repository PSGallery

This command:

Retrieves VCF.PowerCLI from the registered PowerShell Gallery.

Installs the top-level package.

Downloads the required dependencies.

Places the modules in the CurrentUser module path.

Makes the modules available to future PowerShell sessions.

To install the exact VCF PowerCLI 9.1 build used in this article:

Install-Module -Name VCF.PowerCLI `
-RequiredVersion 9.1.0.25380678 `
-Scope CurrentUser `
-Repository PSGallery

Version pinning is useful for shared administration workstations, build runners, scheduled tasks, and automation servers where a controlled dependency baseline matters more than automatically receiving the newest release.

For an AllUsers installation, open an elevated PowerShell session and use:

Install-Module -Name VCF.PowerCLI `
-Scope AllUsers `
-Repository PSGallery

Do not alternate between CurrentUser and AllUsers installations without documenting the module paths. The same workstation can otherwise contain several copies, making interactive testing different from scheduled execution.

Install VCF PowerCLI 9.1 on macOS

PowerCLI runs on macOS through PowerShell 7.

Open Terminal and start PowerShell:

pwsh

Install VCF.PowerCLI for the current user:

Install-Module -Name VCF.PowerCLI `
-Scope CurrentUser `
-Repository PSGallery

To install the exact 9.1 build:

Install-Module -Name VCF.PowerCLI `
-RequiredVersion 9.1.0.25380678 `
-Scope CurrentUser `
-Repository PSGallery

The common CurrentUser module location on macOS is:

$HOME/.local/share/powershell/Modules

Always confirm the actual module paths with:

$env:PSModulePath -split [IO.Path]::PathSeparator

Do not assume a module path based only on the operating system. PowerShell profiles, package managers, and enterprise configuration can modify the path list.

Install VCF PowerCLI 9.1 on Linux

Open the Linux shell and start PowerShell:

pwsh

Install VCF.PowerCLI for the current user:

Install-Module -Name VCF.PowerCLI `
-Scope CurrentUser `
-Repository PSGallery

To install the exact 9.1 package:

Install-Module -Name VCF.PowerCLI `
-RequiredVersion 9.1.0.25380678 `
-Scope CurrentUser `
-Repository PSGallery

The common CurrentUser module location on Linux is:

$HOME/.local/share/powershell/Modules

On shared automation hosts, decide whether the automation account should own its module installation or whether the system image should provide an AllUsers installation. Mixing both models often causes version drift between interactive sessions and scheduled jobs.

Install VCF PowerCLI with PSResourceGet

Newer PowerShell environments can use Microsoft.PowerShell.PSResourceGet instead of PowerShellGet.

For a fresh installation:

Install-PSResource -Name VCF.PowerCLI `
-Version 9.1.0.25380678 `
-Scope CurrentUser `
-Repository PSGallery `
-TrustRepository

Use one package-management approach consistently on a host.

Avoid installing with Install-Module, updating with Update-PSResource, copying newer files manually, and then expecting all tools to report the same installation state. A consistent method makes troubleshooting and rollback significantly easier.

Migrate from VMware.PowerCLI to VCF.PowerCLI

Broadcom recommends starting with a clean installation where practical. The migration should begin with script analysis, not package removal.

Find Explicit VMware.PowerCLI Imports

Search scripts, profiles, scheduled-task wrappers, pipeline files, and runbooks for:

Import-Module VMware.PowerCLI

Update the top-level import to:

Import-Module VCF.PowerCLI

A simple repository scan can locate affected PowerShell files:

$ScriptRoot = ‘C:Automation’

Get-ChildItem -Path $ScriptRoot `
-Filter ‘*.ps1’ `
-Recurse `
-File |
Select-String -Pattern ‘VMware.PowerCLI’ |
Select-Object Path, LineNumber, Line

Change $ScriptRoot to the folder containing your scripts.

Do not automatically replace specific child-module imports such as:

Import-Module VMware.VimAutomation.Core

Those module names may still be valid and are separate from the deprecated top-level package.

Perform a Clean Migration

Close all PowerShell sessions running PowerCLI.

Open a new session and capture the legacy installation:

Get-InstalledModule -Name VMware.PowerCLI `
-AllVersions `
-ErrorAction SilentlyContinue |
Select-Object Name, Version, InstalledLocation

Remove the old top-level package:

Uninstall-Module -Name VMware.PowerCLI `
-AllVersions `
-Force

Install VCF.PowerCLI 9.1:

Install-Module -Name VCF.PowerCLI `
-RequiredVersion 9.1.0.25380678 `
-Scope CurrentUser `
-Repository PSGallery

Uninstall-Module only manages modules installed through Install-Module. It can also refuse to remove a module when another installed module depends on it.

Do not respond by deleting every VMware.* directory. VCF.PowerCLI itself depends on VMware-named modules. Remove only the confirmed legacy top-level package or the exact obsolete version directories you have validated.

Perform an In-Place Migration

An in-place transition may be necessary on a shared administration system where removing the old package first creates too much operational risk.

Before using conflict-bypass parameters, verify the repository and package:

Get-PSRepository -Name PSGallery

Find-Module -Name VCF.PowerCLI `
-Repository PSGallery |
Select-Object Name, Version, Repository

Then install VCF.PowerCLI with the documented migration parameters:

Install-Module -Name VCF.PowerCLI `
-RequiredVersion 9.1.0.25380678 `
-Scope CurrentUser `
-Repository PSGallery `
-Force `
-AllowClobber `
-SkipPublisherCheck

-AllowClobber permits installation when command names overlap with modules already installed.

-SkipPublisherCheck allows the installation to proceed when existing VMware-signed modules conflict with newer Broadcom-signed modules.

These parameters should not become standard installation defaults. Use them only after confirming the package source and understanding why the conflict occurred.

After installation:

Close PowerShell.

Open a new session.

Import VCF.PowerCLI.

Run representative automation scripts.

Validate vCenter connectivity.

Remove the deprecated top-level package after successful testing.

Update an Online VCF PowerCLI Installation

The update command depends on the tool used for the original installation.

Update a PowerShellGet Installation

For a package installed with Install-Module:

Update-Module -Name VCF.PowerCLI `
-Scope CurrentUser

To update to a specific approved version:

Update-Module -Name VCF.PowerCLI `
-RequiredVersion 9.1.0.25380678 `
-Scope CurrentUser

To reinstall without confirmation:

Update-Module -Name VCF.PowerCLI `
-Scope CurrentUser `
-Force

Update-Module only updates modules installed through Install-Module. It searches the active module paths and installs the updated version side by side.

The current PowerShell process does not automatically switch to the new version. Close and reopen PowerShell, or explicitly import the required version after removing the loaded copy.

Update a PSResourceGet Installation

For a package installed with Install-PSResource:

Update-PSResource -Name VCF.PowerCLI `
-Scope CurrentUser `
-Repository PSGallery `
-TrustRepository

PSResourceGet also installs the updated resource side by side with older versions. Start a new PowerShell session before final validation.

Install VCF PowerCLI 9.1 Offline

Offline installation is common in secure management networks, disconnected administration zones, isolated laboratories, and production jump hosts with restricted internet access.

There are two practical methods:

Download the complete ZIP package from Broadcom.

Build a controlled dependency bundle with Save-Module.

Use the Official Broadcom ZIP Package

For VCF PowerCLI 9.1, the official package is:

VCF-PowerCLI-9.1.0-25380678.zip

Broadcom publishes the following MD5 value for that file:

17bd70c7af5d3655b2cf29790ac12ab6

After downloading the file on an internet-connected workstation, verify it:

$PackagePath = ‘C:StagingVCF-PowerCLI-9.1.0-25380678.zip’

(Get-FileHash -Path $PackagePath -Algorithm MD5).Hash.ToLowerInvariant()

Compare the output with the published value.

MD5 is being used here as a transfer-integrity check because it is the hash Broadcom publishes with this package. It does not replace source validation, trusted artifact handling, or digital-signature verification.

Transfer the ZIP file through the organization-approved process and preserve the original archive in an internal software repository.

Build an Offline Bundle with Save-Module

Save-Module downloads the selected module and its dependencies without installing them.

On an internet-connected staging system:

$StagingRoot = ‘C:StagingVCF-PowerCLI-9.1’

New-Item -ItemType Directory `
-Path $StagingRoot `
-Force |
Out-Null

Save-Module -Name VCF.PowerCLI `
-RequiredVersion 9.1.0.25380678 `
-Repository PSGallery `
-Path $StagingRoot `
-Force

Review the downloaded folders:

Get-ChildItem -Path $StagingRoot -Directory |
Sort-Object Name |
Select-Object Name

Create a transport archive:

$ArchivePath = ‘C:StagingVCF-PowerCLI-9.1-Offline.zip’

Compress-Archive `
-Path “$StagingRoot*” `
-DestinationPath $ArchivePath `
-Force

The staging folder should contain the top-level VCF.PowerCLI package and its dependencies.

Do not use the raw .nupkg download as the only offline artifact unless you also handle extraction and dependencies. The PowerShell Gallery warns that the raw package is not unpacked and does not include dependency packages.

Select the Offline Target Module Path

On the disconnected system, inspect the active module paths:

$ModulePaths = $env:PSModulePath -split [IO.Path]::PathSeparator
$ModulePaths

Common paths include:

PlatformCommon CurrentUser module pathPowerShell 7 on WindowsUser Documents folder followed by PowerShellModulesWindows PowerShell 5.1User Documents folder followed by WindowsPowerShellModulesPowerShell 7 on macOS$HOME/.local/share/powershell/ModulesPowerShell 7 on Linux$HOME/.local/share/powershell/Modules

Use a path returned by the current session. This is especially important on Windows systems where the Documents folder may be redirected through Group Policy or OneDrive.

Extract the Offline Package

Set the destination to one of the active module paths:

$ArchivePath = ‘C:StagingVCF-PowerCLI-9.1-Offline.zip’
$TargetModulePath = ‘C:UsersAdministratorDocumentsPowerShellModules’

New-Item -ItemType Directory `
-Path $TargetModulePath `
-Force |
Out-Null

Expand-Archive `
-Path $ArchivePath `
-DestinationPath $TargetModulePath `
-Force

Change $TargetModulePath to the valid location for the target user and PowerShell edition.

On Windows, unblock the transferred files:

Get-ChildItem -Path $TargetModulePath `
-Recurse `
-File |
Unblock-File

Close PowerShell and open a new session before testing discovery.

Validate the Offline Folder Layout

Search for the top-level module manifest:

Get-ChildItem -Path $TargetModulePath `
-Filter ‘VCF.PowerCLI.psd1’ `
-Recurse |
Select-Object FullName

Then verify module discovery:

Get-Module -Name VCF.PowerCLI `
-ListAvailable |
Sort-Object Version -Descending |
Select-Object Name, Version, ModuleBase

If the manifest exists but the module is not discovered, the archive may have been extracted with an additional wrapper folder. Compare the manifest path with the module paths listed in $env:PSModulePath.

Update an Offline Installation

An offline installation cannot be updated with:

Update-Module -Name VCF.PowerCLI

Instead:

Download or build the newer complete bundle on a connected system.

Validate and approve the artifact.

Transfer it to the disconnected system.

Extract it into an approved module path.

Start a new PowerShell session.

Verify the selected version and module location.

Run functional tests.

Retain the previous validated version until the update is accepted.

Side-by-side version folders make rollback possible, but only when the previous files have not been overwritten or removed.

Verify the VCF PowerCLI Version

Installation is not complete until you confirm the version, location, command resolution, and basic functionality.

Verify the Top-Level Package

Get-Module -Name VCF.PowerCLI `
-ListAvailable |
Sort-Object Version -Descending |
Select-Object Name, Version, ModuleBase

For the VCF PowerCLI 9.1 package used in this guide, the expected top-level version is:

9.1.0.25380678

Pay attention to ModuleBase. It shows the exact directory containing each discovered version.

Verify Package-Manager Metadata

For a PowerShellGet installation:

Get-InstalledModule -Name VCF.PowerCLI `
-AllVersions |
Sort-Object Version -Descending |
Select-Object Name, Version, InstalledLocation

For a PSResourceGet installation:

Get-PSResource -Name VCF.PowerCLI |
Sort-Object Version -Descending |
Select-Object Name, Version, InstalledLocation

A copied offline installation may appear in Get-Module -ListAvailable without appearing in either package-manager inventory.

Import the Required Version

Import-Module VCF.PowerCLI `
-RequiredVersion 9.1.0.25380678 `
-Force

Successful execution should return no error and make the PowerCLI commands available in the current session.

Verify Important Cmdlets

Get-Command -Name Connect-VIServer, Get-VM, Get-Cluster |
Select-Object Name, Source, Version

The command source will commonly be a child module such as:

VMware.VimAutomation.Core

That is expected. The top-level package is VCF.PowerCLI, while many cmdlets remain in VMware-named child modules.

Verify Child-Module Versions

Get-Module -Name VMware.* `
-ListAvailable |
Group-Object Name |
ForEach-Object {
$_.Group |
Sort-Object Version -Descending |
Select-Object -First 1
} |
Sort-Object Name |
Select-Object Name, Version, ModuleBase

Do not expect every child module to report version 9.1. Several VCF PowerCLI 9.1 dependencies use the 13.5.0.25380678 version family.

The top-level package version and child-module versions must be evaluated separately.

Compare the Installed Version with the Gallery

This check requires internet access:

$Installed = Get-Module -Name VCF.PowerCLI `
-ListAvailable |
Sort-Object Version -Descending |
Select-Object -First 1

$Available = Find-Module -Name VCF.PowerCLI `
-Repository PSGallery

[pscustomobject]@{
InstalledVersion = $Installed.Version
AvailableVersion = $Available.Version
UpdateAvailable = [version]$Available.Version -gt [version]$Installed.Version
}

An offline environment should compare the installed package with the organization’s approved artifact register instead of querying the public gallery.

Run a Functional vCenter Connection Test

A module version check proves that PowerShell found the package. It does not prove that authentication, certificate validation, networking, and cmdlet execution work.

Use an approved validation endpoint:

$VIServer = ‘vcenter.example.com’
$Credential = Get-Credential

$Connection = Connect-VIServer `
-Server $VIServer `
-Credential $Credential

Get-Datacenter |
Select-Object -First 1 Name

Disconnect-VIServer `
-Server $Connection `
-Confirm:$false

Change $VIServer to the correct vCenter hostname.

Successful validation should confirm:

Connect-VIServer resolves and runs.

DNS resolves the vCenter hostname.

The network path is open.

Authentication succeeds.

Certificate policy behaves as expected.

An inventory command returns data.

The session disconnects cleanly.

Use a credential object rather than embedding usernames and passwords in scripts.

Configure PowerCLI Certificate and CEIP Settings

Review the current PowerCLI configuration:

Get-PowerCLIConfiguration

To disable the Customer Experience Improvement Program prompt for the current user:

Set-PowerCLIConfiguration `
-Scope User `
-ParticipateInCEIP $false `
-Confirm:$false

For an isolated lab using untrusted certificates:

Set-PowerCLIConfiguration `
-Scope User `
-InvalidCertificateAction Ignore `
-Confirm:$false

Do not use Ignore as the default production response to certificate failures. Production environments should correct expired certificates, hostname mismatches, missing intermediate certificates, and untrusted certificate authorities.

Certificate policy is an operational security setting, not an installation requirement.

Troubleshooting VCF PowerCLI Installation and Updates

VMware.PowerCLI Is Reported as Deprecated

Cause: The installation or update command still references the old top-level package.

Fix:

Install-Module -Name VCF.PowerCLI `
-Scope CurrentUser `
-Repository PSGallery

Also update explicit Import-Module VMware.PowerCLI statements.

Commands Are Already Available on the System

Cause: Existing VMware.PowerCLI modules export commands that overlap with the VCF.PowerCLI dependency layout.

Fix:

Install-Module -Name VCF.PowerCLI `
-Scope CurrentUser `
-Repository PSGallery `
-Force `
-AllowClobber

Confirm the repository and package identity before allowing command replacement.

Publisher or Authenticode Mismatch

Cause: Existing modules were signed under the previous VMware publisher, while newer packages use Broadcom signing.

Fix:

Install-Module -Name VCF.PowerCLI `
-Scope CurrentUser `
-Repository PSGallery `
-Force `
-AllowClobber `
-SkipPublisherCheck

Use -SkipPublisherCheck only for the documented migration scenario and only after validating the source.

Update-Module Cannot Find the Installation

Cause: The module was copied manually, installed offline, or is outside the active module paths.

Check both inventories:

Get-InstalledModule -Name VCF.PowerCLI `
-AllVersions `
-ErrorAction SilentlyContinue

Get-Module -Name VCF.PowerCLI `
-ListAvailable

If only Get-Module -ListAvailable finds the package, deploy a new offline bundle instead of using Update-Module.

The New Version Is Installed but the Old Version Loads

Cause: The old module is already loaded, or another module path has higher precedence.

Inspect every available version:

Get-Module -Name VCF.PowerCLI `
-ListAvailable |
Sort-Object Version -Descending |
Select-Object Name, Version, ModuleBase

Check the loaded version:

Get-Module -Name VCF.PowerCLI |
Select-Object Name, Version, ModuleBase

Close PowerShell and open a new session. Then import the required version explicitly:

Import-Module VCF.PowerCLI `
-RequiredVersion 9.1.0.25380678 `
-Force

VCF.PowerCLI Exists on Disk but Is Not Discovered

Cause: The package was extracted outside $env:PSModulePath, or the archive created an extra directory layer.

Check the active paths:

$env:PSModulePath -split [IO.Path]::PathSeparator

Locate the manifest:

Get-ChildItem -Path $HOME `
-Filter ‘VCF.PowerCLI.psd1’ `
-Recurse `
-ErrorAction SilentlyContinue |
Select-Object FullName

Move the complete module hierarchy into a valid module path. Do not move only the top-level manifest while leaving dependencies behind.

Access Is Denied During Installation

Cause: The installation is targeting an AllUsers directory without sufficient permissions.

Use CurrentUser scope:

Install-Module -Name VCF.PowerCLI `
-Scope CurrentUser `
-Repository PSGallery

Use an elevated console only when the design explicitly requires AllUsers scope.

PSGallery Is Missing

Inspect the registered repositories:

Get-PSRepository

Where organizational policy permits the public PowerShell Gallery, restore the default registration:

Register-PSRepository -Default

Test package discovery:

Find-Module -Name VCF.PowerCLI `
-Repository PSGallery

Gallery Access Fails Through a Proxy

Test whether PowerShell can query the repository:

Find-Module -Name VCF.PowerCLI `
-Repository PSGallery `
-Verbose

For PowerShellGet commands that support it, provide the approved proxy configuration:

$Proxy = ‘http://proxy.example.com:8080’

Find-Module -Name VCF.PowerCLI `
-Repository PSGallery `
-Proxy $Proxy

Do not embed proxy credentials in reusable scripts. Use an approved credential-management mechanism.

macOS or Linux Reports Permission Errors

Inspect ownership and permissions on the CurrentUser module path:

$UserModulePath = Join-Path $HOME ‘.local/share/powershell/Modules’

Get-Item -Path $UserModulePath |
Select-Object FullName, Attributes

Modules installed for the current user should be owned and writable by that account. Avoid using sudo pwsh for a user-scoped installation because it can create root-owned files inside paths later used by the normal account.

Child Modules Show Version 13.5 Instead of 9.1

This is expected for several dependencies.

Verify the top-level package separately:

Get-Module -Name VCF.PowerCLI `
-ListAvailable |
Sort-Object Version -Descending |
Select-Object -First 1 Name, Version, ModuleBase

Then verify the child modules independently. Do not use a child-module version to determine whether the VCF.PowerCLI 9.1 meta-package is installed.

Connect-VIServer Reports a Certificate Error

Review the current policy:

Get-PowerCLIConfiguration |
Select-Object Scope, InvalidCertificateAction

For production, repair the certificate trust path or connect with the hostname represented in the certificate.

For an isolated lab only:

Set-PowerCLIConfiguration `
-Scope User `
-InvalidCertificateAction Ignore `
-Confirm:$false

Operational Recommendations for Automation Hosts

Treat PowerCLI like any other production automation dependency.

Pin an approved VCF.PowerCLI version in build runners and scheduled automation.

Record the PowerShell version, operating system, package version, child-module versions, and installation path.

Use one package-management method per host.

Test updates against a non-production vCenter before updating shared runners.

Keep offline packages and hashes in an internal artifact repository.

Update explicit top-level import statements before removing VMware.PowerCLI.

Avoid globally disabling certificate validation.

Start a new PowerShell process after every installation or update.

Run at least one connection and inventory test before returning the system to service.

Retain the previous approved offline package until the new build passes validation.

Document whether automation uses CurrentUser or AllUsers scope.

Test scripts under the same service account that runs them in production.

Conclusion

VCF PowerCLI 9.1 changes the PowerCLI package name, but it does not replace the PowerCLI operating model administrators already know. The top-level package has moved from VMware.PowerCLI to VCF.PowerCLI, while familiar cmdlets and many VMware.* child modules remain.

A fresh installation is straightforward across Windows, macOS, and Linux. Existing environments need a more deliberate migration. Inventory the current package and module paths, update explicit imports, prefer a clean installation, and use conflict-bypass parameters only when handling the documented command and publisher changes.

Offline systems require their own lifecycle. Deploy the complete Broadcom ZIP package or a dependency-complete Save-Module bundle, extract it into a valid module path, and refresh it through another offline deployment when a newer version is approved.

The final test should not stop at Get-Module. Confirm the package version, verify the loaded path, inspect command resolution, connect to vCenter, retrieve inventory data, and disconnect cleanly. That provides evidence that the complete PowerCLI automation path is ready for use.

External References

Broadcom Developer Portal: PowerCLI Installation GuideCanonical URL: https://developer.broadcom.com/powercli/installation-guide

Broadcom Developer Portal: VCF PowerCLICanonical URL: https://developer.broadcom.com/tools/VCF-powercli/latest/

PowerShell Gallery: VCF.PowerCLI 9.1.0.25380678Canonical URL: https://www.powershellgallery.com/packages/VCF.PowerCLI/9.1.0.25380678

PowerShell Gallery: VMware.PowerCLI 13.3.0.24145083Canonical URL: https://www.powershellgallery.com/packages/VMware.PowerCLI/13.3.0.24145083

Microsoft Learn: Install-ModuleCanonical URL: https://learn.microsoft.com/en-us/powershell/module/powershellget/install-module?view=powershellget-2.x

Microsoft Learn: Update-ModuleCanonical URL: https://learn.microsoft.com/en-us/powershell/module/powershellget/update-module?view=powershellget-2.x

Microsoft Learn: Uninstall-ModuleCanonical URL: https://learn.microsoft.com/en-us/powershell/module/powershellget/uninstall-module?view=powershellget-2.x

Microsoft Learn: Save-ModuleCanonical URL: https://learn.microsoft.com/en-us/powershell/module/powershellget/save-module?view=powershellget-2.x

Microsoft Learn: Install-PSResourceCanonical URL: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.psresourceget/install-psresource?view=powershellget-3.x

Microsoft Learn: Update-PSResourceCanonical URL: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.psresourceget/update-psresource?view=powershellget-3.x

Microsoft Learn: about_PSModulePathCanonical URL: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_psmodulepath?view=powershell-7.6

Broadcom Developer Portal: Connect-VIServer CommandCanonical URL: https://developer.broadcom.com/powercli/latest/vmware.vimautomation.core/commands/connect-viserver

VCF 9.1 for AI Workloads: The Decisions Infrastructure Teams Need to Make Before the First GPU Cluster
AI demand rarely arrives as a clean infrastructure request. It usually starts as a conversation. A data science team has a model…

The post How to Install and Update VCF PowerCLI 9.1 on Windows, macOS, and Linux appeared first on Digital Thought Disruption.