6.2

Table Of Contents
VMware, Inc. 49
Chapter 3 Using View PowerCLI
Determining Paths to vSphere Datastore Objects
Define a PowerShell function that uses vSphere PowerCLI to return the full path to a datastore in a cluster as
specified by a resource pool.
# VVGetDatastorePath
# Parameters
# $Datastore Datastore object in vSphere PowerCLI.
# $ResourcePool Resource pool in cluster.
#
#Example
# VVGetDatastorePath (Get-Datastore "datastore1") (Get-ResourcePool "Resources")
function VVGetDatastorePath($Datastore,$ResourcePool){
if($Datastore -and $ResourcePool){
$dsType = $Datastore.GetType().Name
$rpType = $ResourcePool.GetType().Name
if(-not ($dsType.Contains("Datastore")) ){
Write-Error "The Datastore provided is not a Datastore object."
break
}
if(-not ($rpType.Contains("ResourcePool")) ){
Write-Error "The Resource Pool provided is not a ResourcePool object."
break
}
$ClusterPath = VVGetPath(Get-Inventory -Id $ResourcePool.ParentId)
$path = $ClusterPath + "/" + $Datastore.Name
$path
}
}
Adding and Removing Datastores
Define a PowerShell function to add a datastore to an automatic pool.
# AddDatastoreToAutomaticPool
# Parameters
# $Pool Pool ID of pool to be updated.
# $Datastore Full path to datastore to be added.
function AddDatastoreToAutomaticPool
{ param ($Pool, $Datastore)
$PoolSettings = (Get-Pool -pool_id $Pool)
$datastores = $PoolSettings.datastorePaths + ";$Datastore"
Update-AutomaticPool -pool_id $Pool -datastorePaths $datastores
}
Define a PowerShell function to remove a datastore from an automatic pool.
# RemoveDatastoreFromAutomaticPool
# Parameters
# $Pool Pool ID of pool to be updated.
# $Datastore Full path to datastore to be removed.
function RemoveDatastoreFromAutomaticPool
{ param ($Pool, $Datastore)
$PoolSettings = (Get-Pool -pool_id $Pool)
$currentdatastores = $PoolSettings.datastorePaths
$datastores = ""
foreach ($path in $currentdatastores.split(";")){
if(-not ($path -eq $Datastore)){
$datastores = $datastores + "$path;"
}
}
Update-AutomaticPool -pool_id $Pool -datastorePaths $datastores
}