Introduction
In the next article, we will cover:
$servers = Import-Csv "C:ConfigsLinuxVMs.csv"You can store custom values in a CSV or hashtable and loop through deployments.
New-OSCustomizationSpec -Name "Win2019-Auto" `
-OSType Windows `
-FullName "VMware Admin" `
-OrgName "Lab" `
-ProductKey "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX" `
-AdminPassword (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force) `
-TimeZone 035 `
-ChangeSid $true
Step 2: Deploy VM with Customization Spec
View existing specs:
Example: Run a Bash Script on a Linux VM
Get-OSCustomizationSpec
$vm = Get-VM -Name "SQL01"
$cred = Get-CredentialProvisioning a VM is only the first step. Guest-level configuration like hostname setup, IP assignment, domain join, and application bootstrapping are often manual, inconsistent, and time-consuming. With PowerCLI, you can automate guest customization both during and after VM deployment.
Diagram: Guest Customization Automation

Use Case: Automating SQL Server Prep on Windows
You can expand this to include copying ISOs, mounting media, and unattended setup.
$vm = Get-VM -Name "UbuntuApp01"
$cred = Get-CredentialIn this article, we will explore:
- Automating VM encryption and TPM setup with PowerCLI
- Assigning KMS policies
- Verifying encryption status and compliance