Who this is for
Windows-based vSphere/VCF administrators or Platform Engineers who want to use VMware Cloud Foundation (VCF) CLI and Kubernetes tools on a Windows machine.
This guide walks through setting up a Windows admin workstation with all necessary tooling for managing vSphere Kubernetes Service (VKS) on VCF (9).
What you’ll set up
- Install prerequisites (.NET 4.8 for the VCF CLI).
- Install PowerShell tooling: Chocolatey, VCF CLI, kubectl, etc.
- Enable auto-completion and aliases for CLI commands.
- (Optional) Install helpers like PSKubeContext and k9s.
- Verify your environment is ready for VCF and Kubernetes commands.
1) Install .NET 4.8 (required for VCF CLI)
Open PowerShell as Administrator and run:
$DownloadUrl = "https://go.microsoft.com/fwlink/?linkid=2088631" # .NET 4.8 installer
$OutputFile = "C:\ndp48-x86-x64-allos-enu.exe"
Invoke-WebRequest -Uri $DownloadUrl -OutFile $OutputFile -UseBasicParsing -ErrorAction Stop
Start-Process -FilePath $OutputFile -ArgumentList "/quiet","/norestart" -Wait
• Installs silently in the background.
• Once complete, reboot your machine (required for .NET to finalize).
2) Prepare PowerShell & Chocolatey
After reboot, open PowerShell (Administrator) again.
Create a PowerShell profile (Skip if you got one or we will overwrite yours)
New-Item -ItemType File -Path $PROFILE -Force
This creates (or resets) your PowerShell profile (where aliases & completions live).
Install Chocolatey (Windows package manager)
Set-ExecutionPolicy Bypass -Scope Process -Force;
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
• If PATH isn’t updated immediately, restart PowerShell.
3) Install VCF CLI and kubectl
VCF CLI via Chocolatey
choco install vcf-cli -y
Manual installation (if Chocolatey package unavailable)
$vcfRoot = "C:\Program Files\VCF\"
$vcfVersion = "v9.0.0"
$arch = "amd64"
$url = "https://packages.broadcom.com/artifactory/vcf-distro/vcf-cli/windows/$arch/$vcfVersion/vcf-cli.zip"
if (Test-Path $vcfRoot) { Remove-Item -Recurse -Force $vcfRoot }
$tmp = Join-Path $env:TEMP 'vcf-bootstrap'
if (Test-Path $tmp) { Remove-Item -Recurse -Force $tmp }
New-Item -ItemType Directory -Path $tmp | Out-Null
$zip = Join-Path $tmp 'vcf-cli.zip'
Invoke-WebRequest $url -OutFile $zip -UseBasicParsing
Expand-Archive $zip -DestinationPath $tmp -Force
New-Item -ItemType Directory -Path $vcfRoot -Force | Out-Null
Copy-Item (Join-Path $tmp 'vcf-cli-windows_amd64.exe') -Destination (Join-Path $vcfRoot 'vcf.exe') -Force
$currentPath = [Environment]::GetEnvironmentVariable('Path','Machine')
if ($currentPath -notlike "*$vcfRoot*") {
[Environment]::SetEnvironmentVariable('Path', "$currentPath;$vcfRoot", 'Machine')
}
Remove-Item -Recurse -Force $tmp
Write-Host "VCF CLI installed to $vcfRoot. Restart PowerShell or run 'refreshenv'."
Install kubectl
choco install kubernetes-cli -y
Check with:
kubectl version --client
Optional tools
choco install k9s -y # Kubernetes TUI
choco install vscode -y # VS Code for YAML editing
4) Enhance PowerShell with Auto-Completion & Aliases
Install PSReadLine
Install-Module -Name PSReadLine -Force -SkipPublisherCheck
Enable VCF CLI completion
vcf completion powershell | Out-String | Invoke-Expression
vcf completion powershell | Out-File -Append -Encoding ascii $PROFILE
Enable kubectl alias (k) + completion
Set-Alias -Name k -Value kubectl -Option AllScope
$kubeComp = kubectl completion powershell | Out-String
$kubeComp = $kubeComp -replace "CommandName 'kubectl'", "CommandName @('kubectl','k')"
Invoke-Expression $kubeComp
$marker = '# >>> kubectl-alias-and-completion'
$profilePath = $PROFILE
if (-not (Select-String -Path $profilePath -SimpleMatch $marker)) {
$persistBlock = @"
$marker
Import-Module PSReadLine
Set-Alias -Name k -Value kubectl -Option AllScope
$($kubeComp.TrimEnd())
# <<< kubectl-alias-and-completion
"@
Add-Content -Path $profilePath -Value $persistBlock
}
Optional: PSKubeContext (kubectx/kubens equivalents)
Install-Module -Name PSKubeContext -Scope CurrentUser -Force
Add to profile
kubectx/kubens shortcuts and completion
Import-Module PSKubeContext
Set-Alias kubens Select-KubeNamespace
Set-Alias kns Select-KubeNamespace
Set-Alias kubectx Select-KubeContext
Set-Alias kctx Select-KubeContext
Register-PSKubeContextComplete
Reload profile:
. $PROFILE
5) Verify Your Environment
VCF CLI
vcf --help
Try tab completion: vcf context
kubectl & alias
kubectl version --client
k version --client
Try:
k get <Tab><Tab>
kubectx -h
kubens -h
Test k9s
k9s
(Will show UI if a kubeconfig context is configured.)