/usr/lib/vmware-vcenter-license-service/scripts/license.py add --key XXXXX-XXXXX-XXXXX-XXXXX-XXXXX --name "Prod Cluster License" First, find the license ID (not the key string) by listing with the --show-id flag:
vim-cmd vmsvc/getallvms # Not for hosts # Better: use PowerCLI, or from vCenter shell: Alternatively, use vim-cmd hostsvc/hostsummary but that requires the host to be added to vCenter.
Get-License -Key "XXXXX" | Select-Object Total, Used You must first unassign from all hosts and vCenter itself. Using PowerCLI:
vim-cmd vimsvc/license --list vim-cmd vimsvc/license --remove <moref> This reverts the host to evaluation mode (60 days). C. The Deprecated Windows vCenter Tool: licensesvc If you are still on a Windows-based vCenter (6.x or earlier), you can use: vcenter license key command line
In large-scale virtualized environments, the vSphere Web Client is the standard graphical interface for managing licenses. However, when you need to automate, troubleshoot, or perform bulk operations, the command line becomes indispensable. For vCenter Server (both Windows-based and the vCenter Server Appliance - VCSA), several command-line interfaces allow you to view, add, assign, and remove license keys.
tail -f /var/log/vmware/vcenter-license-service/license-service.log Check if already added:
/usr/lib/vmware-vcenter-license-service/scripts/license.py remove --id <license-id> This is done by editing the host's configuration via the vim-cmd tool (which communicates with vCenter's managed object broker). /usr/lib/vmware-vcenter-license-service/scripts/license
systemctl status vcenter-license-service systemctl restart vcenter-license-service
# Get the host's moref (e.g., ha-host, domain-c1234) vim-cmd vimsvc/auth/luid vim-cmd vimsvc/license --assign <license-key> <moref>
$oldKey = "11111-22222-33333-44444-55555" $newKey = "99999-88888-77777-66666-55555" Add new license first New-License -LicenseKey $newKey -Name "Replacement License" Find all hosts using old license $affectedHosts = Get-VMHost | Where-Object $_.LicenseKey -eq $oldKey Reassign foreach ($hostObj in $affectedHosts) Set-VMHost -VMHost $hostObj -LicenseKey $newKey Remove old license if no longer used $oldLicense = Get-License -Key $oldKey if ($oldLicense.Used -eq 0) Remove-License -License $oldLicense -Confirm:$false For vCenter Server (both Windows-based and the vCenter
The most reliable command-line assignment method from VCSA shell is using vcenter-license-service CLI combined with vim-cmd :
$licenses = Get-License $today = Get-Date $warningDays = 30 foreach ($lic in $licenses) if ($lic.ExpirationDate -and $lic.ExpirationDate -ne [DateTime]::MaxValue) $daysLeft = ($lic.ExpirationDate - $today).Days if ($daysLeft -le $warningDays -and $daysLeft -ge 0) Write-Warning "License $($lic.Key) expires in $daysLeft days on $($lic.ExpirationDate)" elseif ($daysLeft -lt 0) Write-Error "License $($lic.Key) expired on $($lic.ExpirationDate)"