Site icon Digital Thought Disruption

PowerCLI and vSAN: Automating Storage Policies, Health Checks, and Capacity Reporting

Introduction

Managing vSAN clusters efficiently requires automation that spans configuration, policy enforcement, health monitoring, and capacity analysis. PowerCLI, with its Storage Policy-Based Management (SPBM) integration, gives administrators a powerful set of tools to operationalize vSAN at scale.

This article covers:


My Personal Repository on GitHub

VMware Repository on GitHub


Prerequisites

Ensure you are connected to vCenter with appropriate permissions:

Connect-VIServer -Server "vcenter.lab.local"

Step 1: View Available vSAN Storage Policies

Get-SpbmStoragePolicy

Output will include built-in and custom policies such as:


Step 2: Assign Storage Policy to Existing VMs

$policy = Get-SpbmStoragePolicy -Name "vSAN RAID5"
Get-VM -Name "WebApp01" | Set-SpbmEntityConfiguration -StoragePolicy $policy

To apply policies in bulk:

Get-VM | Where-Object {$_.Name -like "SQL*"} | Set-SpbmEntityConfiguration -StoragePolicy $policy

Step 3: Validate Policy Compliance

Get-SpbmEntityConfiguration -HardCompliance | Select Entity, StoragePolicy, ComplianceStatus

Compliance statuses include:


Step 4: vSAN Health Monitoring

Get vSAN cluster health summary:

Get-VsanClusterConfiguration -Cluster "vSAN-Prod"

Retrieve disk health details:

Get-Cluster "vSAN-Prod" | Get-VsanDiskGroup | Select VMHost, HealthStatus, CapacityDisks, CacheDisks

Step 5: Capacity and Deduplication Reporting

Get-Cluster "vSAN-Prod" | Get-VsanSpaceUsage

Output will show:

Export to CSV:

Get-Cluster "vSAN-Prod" | Get-VsanSpaceUsage | Export-Csv "C:\Reports\vSAN_Capacity.csv" -NoTypeInformation

Step 6: Rebalance and Maintenance Mode Automation

Check if a rebalance is needed:

Get-VsanClusterConfiguration -Cluster "vSAN-Prod" | Select RebalanceStatus

Place a host into vSAN-safe maintenance mode:

Set-VMHost -VMHost "esxi03.lab.local" -State Maintenance -Evacuate PoweredOffVMs

For full data evacuation:

Set-VMHost -VMHost "esxi03.lab.local" -State Maintenance -EvacuateAllData

Diagram: vSAN Automation Flow


Use Case: Weekly Compliance and Capacity Reporting

This example generates a combined compliance and capacity report every Friday:

$compliance = Get-SpbmEntityConfiguration -HardCompliance | Select Entity, StoragePolicy, ComplianceStatus
$capacity = Get-Cluster "vSAN-Prod" | Get-VsanSpaceUsage

$compliance | Export-Csv "C:\Reports\vSAN_Compliance.csv" -NoTypeInformation
$capacity | Export-Csv "C:\Reports\vSAN_Capacity.csv" -NoTypeInformation

Schedule with Windows Task Scheduler or cron.


Troubleshooting

IssueSolution
Policy assignment failsEnsure VM disks are stored on vSAN and that the policy is compatible
Get-VsanDiskGroup returns no resultsVerify vSAN is enabled on the cluster and host has vSAN disk groups
Compliance status is UnknownConfirm VM has completed policy application and host communication is stable
Set-VMHost fails on maintenanceEnsure no pinned VMs or vSAN resync activity before evacuating data

What’s Next

In the next article, we will explore NSX-T Security Group Automation with PowerCLI:

Exit mobile version