-- Leo's gemini proxy

-- Connecting to gmi.runtimeterror.dev:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;lang=en-US

💻 [runtimeterror $]

2020-09-16

Logging in to Multiple vCenter Servers at Once with PowerCLI



I manage a large VMware environment spanning several individual vCenters, and I often need to run PowerCLI [1] queries across the entire environment. I waste valuable seconds running `Connect-ViServer` and logging in for each and every vCenter I need to talk to. Wouldn't it be great if I could just log into all of them at once?

[1] PowerCLI

I can, and here's how I do it.

Image: Logging in to multiple vCenters

The Script

The following Powershell script will let you define a list of vCenters to be accessed, securely store your credentials for each vCenter, log in to every vCenter with a single command, and also close the connections when they're no longer needed. It's also a great starting point for any other custom functions you'd like to incorporate into your PowerCLI sessions.

# PowerCLI_Custom_Functions.ps1
# Usage:
#   0) Edit $vCenterList to reference the vCenters in your environment.
#   1) Call 'Update-Credentials' to create/update a ViCredentialStoreItem to securely store your username and password.
#   2) Call 'Connect-vCenters' to open simultaneously connections to all the vCenters in your environment.
#   3) Do PowerCLI things.
#   4) Call 'Disconnect-vCenters' to cleanly close all ViServer connections because housekeeping.
Import-Module VMware.PowerCLI
$vCenterList = @("vcenter1", "vcenter2", "vcenter3", "vcenter4", "vcenter5")
function Update-Credentials {
    $newCredential = Get-Credential
    ForEach ($vCenter in $vCenterList) {
        New-ViCredentialStoreItem -Host $vCenter -User $newCredential.UserName -Password $newCredential.GetNetworkCredential().password
    }
}
function Connect-vCenters {
    ForEach ($vCenter in $vCenterList) {
        Connect-ViServer -Server $vCenter
    }
}
function Disconnect-vCenters {
    Disconnect-ViServer -Server * -Force -Confirm:$false
}

The Setup

Edit whatever shortcut you use for launching PowerCLI (I use a tab in Windows Terminal [2] - I'll do another post on that setup later) to reference the custom init script. Here's the commandline I use:

powershell.exe -NoExit -Command ". C:\Scripts\PowerCLI_Custom_Functions.ps1"

The Usage

Now just use that shortcut to open up PowerCLI when you wish to do things. The custom functions will be loaded and waiting for you.

Start by running `Update-Credentials`. It will prompt you for the username+password needed to log into each vCenter listed in `$vCenterList`. These can be the same or different accounts, but you will need to enter the credentials for each vCenter since they get stored in a separate `ViCredentialStoreItem`. You'll also run this function again if you need to change the password(s) in the future.

Log in to all the things by running `Connect-vCenters`.

Do your work.

When you're finished, be sure to call `Disconnect-vCenters` so you don't leave sessions open in the background.


[2] Windows Terminal



---


📧 Reply by email



Related articles


Enabling FIPS Compliance Fixes Aria Lifecycle 8.14

I Ditched vSphere for Proxmox VE

PSA: Microsoft's KB5022842 breaks Windows Server 2022 VMs with Secure Boot

---


Home

This page on the big web

-- Response ended

-- Page fetched on Thu May 9 22:42:56 2024