WilliamLam.com

  • About
    • About
    • Privacy
  • VMware Cloud Foundation
  • VKS
  • Homelab
    • Hardware Options
    • Hardware Reviews
    • Lab Deployment Scripts
    • Nested Virtualization
    • Homelab Podcasts
  • VMware Nostalgia
  • Apple

PowerCLI automation for VMware Private AI Foundation with NVIDIA (PAIF-N)

04.02.2024 by William Lam // 2 Comments

With the release of VMware Cloud Foundation (VCF) 5.1.1, customers can now take advantage of the new VMware Private AI Foundation with NVIDIA (PAIF-N) solution, providing an optimized and validated platform by NVIDIA for running modern AL/ML workloads on VCF. To learn more about the PAIF-N solution for VCF, there is a comprehensive PAIF-N Guide that includes the full software build-of-materials (BOM) as well as a step-by-step implementation guide for deploying the solution.

If you are interested in exploring the new PAIF-N solution, I recently came to learn the PowerCLI team have created some really useful PowerCLI scripts which fully automates the deployment of PAIF-N and makes setting up the environment a breeze!

There are 4 PowerCLI scripts that is included in the PAIF-N automation:

[Read more...]

Categories // Automation, PowerCLI, Private AI Foundation with NVIDIA, VMware Cloud Foundation Tags // NVIDA, PAIF-N, PowerCLI, VCF, VMware Cloud Foundation

Quick Tip - Audit vSphere VMs configured with USB Controllers

03.07.2024 by William Lam // 6 Comments

Automation scales Operations, that is a phrase that I have used several times today in various conversations with colleagues and customers. I truly believe organizations can scale more efficiently and consistently when leveraging Automation and not be afraid of it or worse, attempting to avoid it at all cost!

In fact, Automation is a super power when it comes to the various reporting and auditing needs of an organization such as this recent inquiry in auditing all vSphere VMs that have been configured with a USB controller. The following PowerCLI snippet leverages  the vSphere API to check whether there are any VMs that have been configured with either a USB 2.x controller (VirtualUSBController) or USB 3.x controller (VirtualUSBXHCIController) and outputs that in a simple table format, as shown in the example below.

# Retrieve all VMs and only include Name and Device data
$vms = Get-View -ViewType VirtualMachine -Property Name,Config.Hardware.Device

$results = @()
foreach ($vm in $vms) {
    $haveUSB2Controller = $false
    $haveUSB3Controller = $false

    # Filter out devices that have USB 2.x and 3.x controllers & USB Devices (for mapping purposes)
    $devices = $vm.Config.Hardware.Device | where {$_.getType().Name -eq "VirtualUSBController" -or $_.getType().Name -eq "VirtualUSBXHCIController" -or $_.getType().Name -eq "VirtualUSB"}

    $usb2devices = @()
    $usb3devices = @()
    foreach ($device in $devices) {
        # Check whether USB controller is 2.x
        if($device.getType().Name -eq "VirtualUSBController") {
            $haveUSB2Controller = $true

            # Collect any connected USB devices on this controller
            foreach ($deviceKey in $device.device) {
                $usbDevice = $devices | where {$_.key -eq $deviceKey}
                $usbVid = [String]::Format("{0:x}", $usbDevice.Vendor)
                $usbPid = [String]::Format("{0:x}", $usbDevice.Product)
                $usb2devices += "${usbVid}:${usbPid}"
            }
        }

        # Check whether USB controller is 3.x
        if($device.getType().Name -eq "VirtualUSBXHCIController") {
            $haveUSB3Controller = $true

            # Collect any connected USB devices on this controller
            foreach ($deviceKey in $device.device) {
                $usbDevice = $devices | where {$_.key -eq $deviceKey}
                $usbVid = [String]::Format("{0:x}", $usbDevice.Vendor)
                $usbPid = [String]::Format("{0:x}", $usbDevice.Product)
                $usb3devices += "${usbVid}:${usbPid}"
            }
        }
    }
    # Only output VMs that have USB controllers
    if($haveUSB2Controller -or $haveUSB3Controller) {
        $tmp = [pscustomobject] @{
            VM = $vm.Name
            USB2Controller = $haveUSB2Controller
            USB2Devices = $usb2devices
            USB3Controller = $haveUSB3Controller
            USB3Devices = $usb3devices
        }
        $results+=$tmp
    }
}

# Format output (can easily output to CSV/Excel)
$results | ft

Here is an example screenshot listing only the VMs that have a USB controller and you can easily pipe the output to CSV or Excel for further processing rather than displaying the results in the console.

UPDATE (03/11/24) - The script above has been updated to also included all connected USB devices for either USB 2.x or 3.x controller found for a given VM. The format of the connected USB devices are vendorId:productId, which you can then use sites like DeviceHunt to get the friendly vendor/product name.

Categories // Automation, PowerCLI Tags // usb

Automated Aria Suite (Lifecycle, Identity, Operations, Logs & Automation) Lab Deployment Script

02.27.2024 by William Lam // 3 Comments

I recently got reacquainted with the Aria Suite Lifecycle Manager (ASLCM) solution, which makes it super easy for anyone to manage the deployment, configuration and lifecycle for the complete Aria suite of products including Aria Identity, Aria Operations, Aria Operations for Logs and Aria Automation.

Users can deploy the various Aria products in either standalone or clustered mode (for high availability purposes), with the former being ideal for learning and homelab purposes. In addition to deploying ASLCM and the individual Aria products, I wanted to also use this as an opportunity explore the ASLCM REST API and what better way to learn than to have a use case to get hands on experience.

While ASLCM already provides a simple way to deploy Aria products using the UI and includes a nice export/import feature for an environment configuration in JSON, I wanted to do the same, but programmatically using the ASLCM REST API to fully configure the environment.

[Read more...]

Categories // Aria, PowerCLI, VMware Cloud Foundation, VMware vSphere Foundation, vSphere Tags // Aria Automation, Aria Identity, Aria Operations, Aria Operations for Logs, Aria Suite Lifecycle Manager

  • « Previous Page
  • 1
  • …
  • 4
  • 5
  • 6
  • 7
  • 8
  • …
  • 56
  • Next Page »

Search

Thank Author

Author

William is Distinguished Platform Engineering Architect in the VMware Cloud Foundation (VCF) Division at Broadcom. His primary focus is helping customers and partners build, run and operate a modern Private Cloud using the VMware Cloud Foundation (VCF) platform.

Connect

  • Bluesky
  • Email
  • GitHub
  • LinkedIn
  • Mastodon
  • Reddit
  • RSS
  • Twitter
  • Vimeo

Recent

  • Automating the vSAN Data Migration Pre-check using vSAN API 06/04/2025
  • VCF 9.0 Hardware Considerations 05/30/2025
  • VMware Flings is now available in Free Downloads of Broadcom Support Portal (BSP) 05/19/2025
  • VMUG Connect 2025 - Minimal VMware Cloud Foundation (VCF) 5.x in a Box  05/15/2025
  • Programmatically accessing the Broadcom Compatibility Guide (BCG) 05/06/2025

Advertisment

Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Cookie Policy

Copyright WilliamLam.com © 2025

 

Loading Comments...