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:

  • Viewing and assigning vSAN storage policies
  • Monitoring cluster health and disk status
  • Tracking storage usage and deduplication ratios
  • Exporting compliance and capacity reports

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:

  • vSAN Default Storage Policy
  • RAID-1 FTT=1
  • RAID-5 Erasure Coding

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:

  • Compliant
  • NonCompliant
  • Unknown

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:

  • Total capacity
  • Used space
  • Deduplication ratio
  • Reserved capacity

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:

  • Create static and dynamic groups
  • Manage DFW group memberships
  • Export group-to-VM mappings

Leave a Reply

Discover more from Digital Thought Disruption

Subscribe now to keep reading and get access to the full archive.

Continue reading