This script uses powershell to query the cluster for all Cluster Shared Volumes (CSV). It then returns the path to the CSV with the most space available. Space is measured as a % rather than GB.

 

I ammended an existing script already available on technet to meet my requirements. This script is used in Orchestrator before deploying a new hyper-v machine to ensure the most appropriate CSV was used.

 

PowerShell
Edit|Remove
#Script used to find the Cluster Shared Volume in a cluster with the most free space as a % available.  
#Tested on 2008R2 and 2012 clusters 
#Returns the path to the csv in the $mostfree.path 
# 
#Denis Cooper - October 2013 
#This is an amended version of a script already available on Technet.  
 
#Import modules 
Import-Module FailoverClusters 
 
#Setup variables - change the cluster name to match the name of your cluster 
$objs = @() 
$cluster = "CLUSTER-NAME-GOES-HERE" 
 
#Gets the cluster shared volumes from the cluster and their associated properties 
$csvs = Get-ClusterSharedVolume -Cluster $cluster  
foreach ( $csv in $csvs ) 
{ 
   $csvinfos = $csv | select -Property Name -ExpandProperty SharedVolumeInfo 
   foreach ( $csvinfo in $csvinfos ) 
   { 
      $obj = New-Object PSObject -Property @{ 
         Path        = $csvinfo.FriendlyVolumeName 
         PercentFree = $csvinfo.Partition.PercentFree 
      } 
      $objs +$obj 
   } 
} 
 
#Selects the CSV with the most free space as a % 
$mostfree = $objs |  Sort-Object -property PercentFree -Descending | Select-Object -First 1 
 
#Outputs the path to the csv with the most free space as a % 
$mostfree.path