I have been modifing a script to do automated right sizing for me based on an imported csv file.
I think i have the Script sorted out but it will not run, I get this error.
Any help would be appriciated.
Get-VM : Cannot validate argument on parameter 'Name'. The argument is null or
empty. Supply an argument that is not null or empty and then try the command ag
ain.
At C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\RightSize.ps1:
66 char:28
+ foreach($vm in Get-VM -Name <<<< ($vms.Virtual Machine)){ + CategoryInfo : InvalidData: (:) [Get-VM], ParameterBindingValid ationException + FullyQualifiedErrorId : ParameterArgumentValidationError,VMware.VimAutom ation.ViCore.Cmdlets.Commands.GetVM
This is the code.
function PowerOff-VM{ param([string] $vm) Shutdown-VMGuest -VM (Get-VM $vm) -Confirm:$false | Out-Null Write-Host "Shutdown $vm" do { $status = (get-VM $vm).PowerState }until($status -eq "PoweredOff") return "OK"
}
function PowerOn-VM{
param( [string] $vm) if($vm -eq ""){ Write-Host "Please enter a valild VM name"} if((Get-VM $vm).powerstate -eq "PoweredOn"){ Write-Host "$vm is already powered on"} else{ Start-VM -VM (Get-VM $vm) -Confirm:$false | Out-Null Write-Host "Starting $vm" do { $status = (Get-vm $vm | Get-View).Guest.ToolsRunningStatus }until($status -eq "guestToolsRunning") return "OK" }
}
$VIServer = Connect-VIServer "vcenter"
If ($VIServer.IsConnected -ne $true){ Write-Host "error connecting to $vCenter" -ForegroundColor Red exit
}
$vms = Import-CSV .\vcopsreport.csv
foreach($vm in Get-VM -Name ($vms."Virtual Machine")){ if($vms."Recommended Memory" -or $vms."Recommended vCPU" -ne "0"){ $poweroff = PowerOff-VM $vm.Name if($poweroff -eq "Ok"){ Write-Host "PowerOff OK" if($vms."Recommended Memory" -ne "0"){ $vm.Name | Set-VM -MemoryGB $vms."Recommended Memory" -Confirm:$False Write-Host "The new configured amount of memory is"(Get-VM $VM).MemoryGB } if($CPUCount -ne "0"){ $vm.Name | Set-VM -NumCPU $vms."Recommended vCPU" -Confirm:$False Write-Host "The new configured number of vCPU's is"(Get-VM $VM).NumCPU } $poweron = PowerOn-VM $vm.Name if($poweron -eq "Ok"){ Write-Host "PowerOn OK"} } }
}
Disconnect-VIServer -Confirm:$false