So I am writing a powercli scrip that will take a cluster name and with a filter enumerate all the datastores on the cluster that are on our SAN. It will then snap the VMs so that I can issue a SAN snap. I am rather new to powershell so I realize this may not be the cleanest of scripts, but the main issue I am having is with this line:
$datastorelist = Get-Datastore -Name $arrayname -VMHost $nodelist
Any help would be greatly appreciated, thanks!
If I write the $nodelist to the screen it is formatted correctly and if copy the contents of $nodelist and hard code it into the parameter it works fine, but passing the string creates the following error:
Get-Datastore : 5/13/2013 8:26:29 AM Get-Datastore Could not find DatastoreRelatedObjectBase with name 'vh110
1119.mydomain.com,vhost20.mydomain.com,vhost18.mydomain.com,vhost02.mydomain.com,vhost03.mydomain.com,vhost04
.mydomain.com,vhost05.mydomain.com'.
At E:\Program Files\3par scripts\vmsnaps.ps1:64 char:32
+ $datastorelist = Get-Datastore <<<< -Name $arrayname -VMHost $hostlist
+ CategoryInfo : ObjectNotFound: (vhost19.mydom...05.mydomain.com:String) [Get-Datastore], VimException
+ FullyQualifiedErrorId : Core_ObnSelector_SelectObjectByNameCore_ObjectNotFound,VMware.VimAutomation.ViCore.Cmdle
ts.Commands.GetDatastore
The scrip defines some variables and loads them, then calls FindNode then QueryDatastores
Function FindNodes
#This function will take cluster and enumerate it to the hosts wthin it and add them to a comma delimited string
{
Write-Host
Write-Host Enumerating cluster nodes in $cluster cluster....
#$nodes = Get-VMHost -Location $cluster
$nodes = Get-Cluster $cluster | Get-VMHost
Write-Host Found $nodes.Length nodes in cluster
foreach ($i in $nodes) {
$i.name
$nodelist = $nodelist +","+$i.name
$script:nodelist = $nodelist
}
$script:nodelist = $nodelist.substring(1)
}
Function QueryDatastores
# This function will enumerate the datastores on the given cluster that start with the $arrayname variable.
{
Write-Host
Write-Host Enumerating datastores on $cluster cluster, please wait.....
Write-Host $nodelist
$datastorelist = Get-Datastore -Name $arrayname -VMHost $nodelist
Write-Host Found $datastorelist.Length datastores in $cluster cluster
foreach ($i in $datastorelist) {
$i.name
}
}
Clear-Host
Write-Host
Write-Host Loading Powercli....
Add-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue
Write-Host Connecting to $vcenter "please wait...."
connect-viserver -server $vcenter
FindNodes
QueryDatastores