Files
Backup/_NDGOV_WindowsTeam/ITD.Infra-VMware.Administration/Scripts/CommonTasks.ps1
T
Zack Meier 1d304511b8 update
2026-04-15 15:45:50 -05:00

404 lines
21 KiB
PowerShell

#----------------------------------------------------------------------------------------------------------------------------------------------------
#vCenter Credentials
$creds = Get-Credential
Connect-VIServer itdvmvc1.nd.gov, itdvmvc2.nd.gov -Credential $creds
#----------------------------------------------------------------------------------------------------------------------------------------------------
#ConvertTo-Array
$VMs=@"
itdtaxtga1.nd.gov
itdtaxpfa1.nd.gov
itdtaxsga1.nd.gov
itdtaxsga2.nd.gov
itdtaxpga1.nd.gov
itdtaxpga2.nd.gov
itdtaxpga3.nd.gov
"@
$VMs=ConvertTo-Array -MultiLineString $VMs
#----------------------------------------------------------------------------------------------------------------------------------------------------
#Move VM to Datastore
$VMdatastore = 'VMWINDOWS1_143_A9K_R_SHRDPPLSFTST'
Get-VM $VMs | Get-HardDisk
Get-VM $VMs | Move-VM -DiskStorageFormat Thin -Datastore $VMdatastore
#----------------------------------------------------------------------------------------------------------------------------------------------------
#Copy Files to/from Remote Computer
#$fileloc = "C:\Users\delange\State of North Dakota\-Tm-ITD-Virtualization - Documents\VMware\Upgrades\ESXi\6.5.0Update3preGen9\VMware-ESXi-6.5.0-Update3-13932383-HPE-preGen9-650.U3.9.6.8.8-Jun2019.iso"
$fileloc = "C:\users\delange\Downloads\sql.zip"
#$fileloc = "O:\Backups\vp_grandforks\vp_grandforks.bak"
#$fileloc = "C:\temp3\AccelaSchool\*"
#$fileloc = "C:\temp\vp_bis_11252019.bak"
#$fileloc = "C:\ITD\vc-itdvmvc1.nd.gov-2020-01-14--19.33-53492.tgz"
#$fileloc = "D:\Upgrades\VMware\VMware-VCSA-all-6.5.0-14836121.iso"
#$fileloc = "F:\Support Bundles\vc-itdvmvc1.nd.gov-2020-01-07--19.02-29010.tgz"
#$destination = "D:\Upgrades\VMware\"
#$destination = "D:\delange"
#$destination = "C:\users\delange\Downloads\"
#$destination = "C:\inetpub\wwwroot\"
$destination = "D:\ITD\temp\"
#$servers = 'itdvmutil'
$servers = 'itdps-update.nd.gov'
#$servers = 'itdps-images.nd.gov'
#Copy to server
foreach ($server in $servers){
$s=New-PSSession $server -Credential $creds
Copy-Item $fileloc -ToSession $s -Destination $destination
}
#Copy from server
foreach ($server in $servers){
$s=New-PSSession $server -Credential $creds
Copy-Item $fileloc -FromSession $s -Destination $destination
}
#----------------------------------------------------------------------------------------------------------------------------------------------------
#Approve New VMs
Compare-ITDVMwareVMtoSharePoint -NewBuilds -OutVariable MatchSP | Format-Table
$MatchSP -Match $false | Sort-Object Name | Format-Table
$VMs=@"
itdohrcdbp1.nd.gov
itdohrcwebp1.nd.gov
"@
$VMs=ConvertTo-Array -MultiLineString $VMs
Approve-ITDVMwareVMNewBuild -ComputerName $VMs
#----------------------------------------------------------------------------------------------------------------------------------------------------
#Snapshots/Clones
#Get Current Snapshots
Get-VM | Get-Snapshot | Select-Object Name,VM | Sort-Object -Property Name | Format-Table -AutoSize #| clip.exe
#Take Snapshot
$SnapId = 2151..2156
New-ITDVMwareVMSnapshotTask -id $SnapId -vCenterCredential $creds
#Delete Snapshot from Scripted Task
$SnapId = 2186
Remove-ITDVMwareVMSnapshot -Id $SnapId -vCenterCredential $creds
#Delete Snapshot taken manually
$VM = 'bnd0704.nd.gov','itdscmt1.nd.gov'
Get-VM -Name $VM | Where-Object -Property PowerState -EQ PoweredOn | Get-Snapshot | Remove-Snapshot -Confirm:$false
#New Clone
$CloneId = 2149
New-ITDVMwareVMCloneTask -Id $CloneId -vCenterCredential $creds
#Delete Clone
$CloneId = 2117
Get-VM | Where-Object -Property Name -Like "*$CloneId*"
foreach ($Clone in $CloneId){
$DeleteClone = Get-VM | Where-Object -Property Name -Like "*$Clone*"
$DeleteClone | Remove-VM -DeleteFromDisk -Confirm:$false
}
#Snap entire vCenter environment at once
Get-VM itdvmpsc1*,itdvmvc1*,itdvmpsc2*,itdvmvc2* | New-Snapshot -Name "Converge External PSC"
Get-VM itdvmpsct1*,itdvmvct1*,itdvmpsct2*,itdvmvct2* | New-Snapshot -Name "PSCT2 Decommissioned"
#----------------------------------------------------------------------------------------------------------------------------------------------------
#Edit VMs
#Add CPU
$VMs = 'itdsql16p1.nd.gov'
$cpu = '4'
Get-VM $VMs
Set-VM $VMs -NumCpu $cpu -Confirm:$false
#Remove CPU
$VMs = 'bnd0557.nd.gov'
$cpu = '1'
Get-VM -Name $VMs | Shutdown-VMGuest -Confirm:$false
#Start-Sleep -Seconds 60
Get-VM -Name $VMs
Get-VM -Name $VMs | Set-VM -NumCPU $cpu -Confirm:$false
Start-VM $VMs -Confirm:$false
#Increase RAM
$VMs = 'itdcndhf16qps.nd.gov','itdcndhefqps.nd.gov'
$ram = '12'
Get-VM $VMs
Set-VM $VMs -MemoryGB $ram -Confirm:$false
#Remove RAM
$VMs = ''
$ram = ''
Get-VM $VMs | Shutdown-VMGuest -Confirm:$false
Start-Sleep -Seconds 60
Get-VM -Name $VMs | Set-VM -MemoryGB 16 -Confirm:$false
Start-VM $VMs -Confirm:$false
#Disconnect CDROM
$VMs = 'itdcndstrwt7.nd.gov'
foreach ($VM in $VMs){
Get-VM $VM | Get-CDDrive | Set-CDDrive -NoMedia -Confirm:$false
}
#Expand Disks
$VM = 'itdcndstvm04.nd.gov'
Get-VM | Where-Object -Property Name -Like "*$VM*"
Get-VM $VM | Get-HardDisk | Select-Object Name,CapacityGB,Filename
$harddisk = "Hard Disk 2"
$increasedisk = 3
$datastore = Get-VM $VM | Get-HardDisk | Where-Object -Property Name -EQ $harddisk | Get-Datastore
Get-Datastore $datastore | Select Name,FreeSpaceGB,CapacityGB
$newcap = (Get-VM $VM | Get-HardDisk | Where-Object -Property Name -EQ $harddisk).CapacityGB + $increasedisk
$newcap
Get-VM $VM | Get-HardDisk | Where-Object -Property Name -EQ $harddisk | Set-HardDisk -CapacityGB $newcap -Confirm:$false
#List NumCpu, MemoryGB, Total HardDiskSizeGB
$VMs = 'itd1xaes2','itdbiscmsvr','itdredskyaes','itdwfoaes4'
$datacenter = 'Primary Datacenter'
$harddisk = @{n="HardDiskSizeGB";e={(Get-HardDisk -VM $_ | Measure-Object -Sum CapacityGB).Sum}}
foreach ($VM in $VMs){
Get-Datacenter $datacenter | Get-VM | Where-Object -Property Name -Like "$VM*" | Select-Object -Property Name,NumCpu,MemoryGB,$harddisk
}
foreach ($VM in $VMs){
Get-VM | Where-Object -Property Name -Like "$VM*" | Get-HardDisk | Select-Object Name,CapacityGB,Filename | Sort-Object Filename -Descending
}
#----------------------------------------------------------------------------------------------------------------------------------------------------
#Port groups
#New distributed port group
$IP = '10.2.160.240/28' <#10.10.10.10/28#>
$VLANid = '3326' <#0001#>
New-ITDVMNetwork -CIDR $IP -VLAN $VLANid
#Remove distributed port group
$portgroup = 'dvPG_'
Get-VDPortgroup | Where-Object -Property Name -EQ $portgroup | Remove-VDPortGroup -Confirm:$false
#Manually add port group
$BismarckVDSwitch = 'dvSwitch3-PDC-AVAYA1-Data'
$MandanVDSwitch = 'dvSwitch3-SDC-AVAYA2-Data'
$PGName = 'dvPG3_2278_165.234.164.0_27'
$VlanId = '2278'
Get-VDSwitch -Name $BismarckVDSwitch | New-VDPortGroup -Name $PGName -NumPorts 1 -VlanId $VlanId
Get-VDSwitch -Name $BismarckVDSwitch | Get-VDPortGroup | Where-Object {$_.Name -like ("*" + "_" + $VlanId)} | Get-VDUplinkTeamingPolicy | Set-VDUplinkTeamingPolicy -FailoverDetectionPolicy BeaconProbing
Get-VDSwitch -Name $BismarckVDSwitch | Get-VDPortGroup | Where-Object {$_.Name -like ("*" + "_" + $VlanId)} | Get-VDPortgroupOverridePolicy | Set-VDPortgroupOverridePolicy -BlockOverrideAllowed $false -ResetPortConfigAtDisconnect $false
Get-VDSwitch -Name $MandanVDSwitch | New-VDPortGroup -Name $PGName -NumPorts 1 -VLANID $VlanId
Get-VDSwitch -Name $MandanVDSwitch | Get-VDPortGroup | Where-Object {$_.Name -like ("*" + "_" + $VlanId)} | Get-VDUplinkTeamingPolicy | Set-VDUplinkTeamingPolicy -FailoverDetectionPolicy BeaconProbing
Get-VDSwitch -Name $MandanVDSwitch | Get-VDPortGroup | Where-Object {$_.Name -like ("*" + "_" + $VlanId)} | Get-VDPortgroupOverridePolicy | Set-VDPortgroupOverridePolicy -BlockOverrideAllowed $false -ResetPortConfigAtDisconnect $false
#----------------------------------------------------------------------------------------------------------------------------------------------------
#Delete VMs
#Rename VMs for decommission
$VMs=@"
itdcndstfwp.nd.gov
itdcndstfsowp.nd.gov
itdcndstfwp1.nd.gov
itdcndstfapp1.nd.gov
itdcndstfwp2.nd.gov
itdcndstfapp2.nd.gov
"@
$VMs=ConvertTo-Array -MultiLineString $VMs
Remove-ITDVMWareVM -ComputerName $VMs | Select-Object -Property Name,PowerState
foreach ($VM in $VMs){
Get-VM | Where-Object -Property Name -Like "$VM*" | Select-Object -Property Name,PowerState
}
#Delete VM - FINAL DELETE
$deleteVM = foreach ($VM in $VMs){
Get-VM | Where-Object -Property Name -Like "$VM*delete*"
}
$deleteVM.Name
$deleteVM | Remove-VM -DeleteFromDisk -Confirm:$false
#----------------------------------------------------------------------------------------------------------------------------------------------------
#Replace VMs
$VMs = 'itdexchcasbis2.nd.gov','itdexchcasman2.nd.gov','itdcndhehb.nd.gov','itdcndheclnadd.nd.gov'
foreach ($VM in $VMs){
$VMold = Get-VM | Where-Object -Property Name -Like "$VM*" | Where-Object -Property PowerState -EQ PoweredOff
$VMnew = Get-VM | Where-Object -Property Name -Like "$VM*new*"
$VMtags = ($VMold | Get-TagAssignment).Tag | Sort-Object -Unique
foreach ($VMtag in $VMtags){
New-TagAssignment -Entity $VMnew -Tag $VMtag
}
Remove-ITDVMWareVM -ComputerName $VMold.Name
Set-VM -VM $VMnew -Name $VMold -Confirm:$false
}
foreach ($VM in $VMs){
Get-VM | Where-Object -Property Name -Like "$VM*" | Get-TagAssignment
}
#----------------------------------------------------------------------------------------------------------------------------------------------------
#Datastores
$Datastore = 'VMWINDOWS1_138_A9K_R_BNDFISERV'
#Rescan Host Cluster
Get-Cluster WINDOWS1 | Get-VMHost | Get-VMHostStorage -RescanAllHba -RescanVmfs
#Maintenance Mode
$Datastore = 'VMPS1_48_A9K_R','VMPS1_49_A9K_R','VMPS1_50_A9K_R','VMPS1_51_A9K_R','VMPS1_52_A9K_R','VMPS1_53_A9K_R'
Get-Datastore $Datastore | Set-Datastore -MaintenanceMode $true -EvacuateAutomatically
Get-Datastore $Datastore | Set-Datastore -MaintenanceMode $false
#Adding Datastores
$VMhost = 'itdbisvm-sql01.nd.gov'
#Get CanonicalName
Get-ScsiLun -VmHost $VMhost -LunType Disk | Select-Object CanonicalName,CapacityGB | Sort-Object CanonicalName
#Create Datastore
$Datastore = 'VMSQL1_119_A9K_TAX'
$CanonicalName = 'naa.6001738ccce06785000000000018ef24'
New-Datastore -VMHost $VMhost -Name $Datastore -Path $CanonicalName -VMFS -FileSystemVersion 6
#Removing Datastores
#Datastore Unmap
$Datastores = 'VMLINUX1_248_V5K_SECLOG','VMLINUX1_249_V5K_SECLOG','VMLINUX1_250_V5K_SECLOG','VMLINUX1_251_V5K_SECLOG'
#$Datastores = (Get-DatastoreCluster SQL1_A9K_General | Get-Datastore).Name
foreach ($Datastore in $Datastores){
Start-ITDVMwareDatastoreUnmap -Datastore $Datastores
}
#Expand Datastore
$Datastore = Get-Datastore 'VMTEL1_124_A9K_VBRICK'
$esxi = Get-View -Id ($Datastore.ExtensionData.Host | Select-Object -Last 1 | Select-Object -ExpandProperty Key)
$DatastoreSystem = Get-View -Id $esxi.ConfigManager.DatastoreSystem
$ExpandOptions = $DatastoreSystem.QueryVmfsDatastoreExpandOptions($Datastore.ExtensionData.MoRef)
$DatastoreSystem.ExpandVmfsDatastore($Datastore.ExtensionData.MoRef,$expandOptions.spec)
#Disable Storage I/O Control
$Datastores = 'VMWINDOWS1_90_A9K','VMWINDOWS1_91_A9K','VMWINDOWS1_92_A9K','VMSQL1_57_A9K','VMLINUX1_99_A9K_ELASTIC'
foreach ($Datastore in $Datastores){
Get-Datastore $Datastore | Set-Datastore -StorageIOControlEnabled $false
}
#Unmount/Detach
#Unmount/Detach
Remove-ITDVmwareDatastoreStep1 -LunId 90
#Step2 Storage Admin unmaps LUN from Host
#LUN cleanup (after storage unmap, should return empty)
Remove-ITDVMwareDatastoreStep3 -LunId 57
Remove-ITDVMwareDatastoreStep3 -LunId 90
Remove-ITDVMwareDatastoreStep3 -LunId 91
Remove-ITDVMwareDatastoreStep3 -LunId 92
Remove-ITDVMwareDatastoreStep3 -LunId 99
$Id = "_90_"
$Datastores = Get-Datastore | Where-Object Name -Like ("*_" + $Id + "_*")
ForEach ($Datastore in $Datastores) {
$SharePointRecord = $null
$DatastoreHosts = $Datastore | Get-VMHost
$VMHostCanonicalName = (Get-ScsiLun -VmHost ($DatastoreHosts | Select -First 1) | where-object RuntimeName -Like "*$Id*").CanonicalName
$SharePointRecord = ($SharePointList | Where-Object Title -eq $Datastore.Name)
If ($SharePointRecord.ExtentName -eq $VMHostCanonicalName) {
Write-Verbose ($Datastore.Name + " *** " + $VMHostCanonicalName + " *** CanonicalName accurate in SharePoint, continuing with unmount")
try {
Get-Datastore $Datastore #| Unmount-Datastore
$DatastoreHosts | Select-Object -First 1 | Remove-Datastore $Datastore -Confirm:$false -RunASync
$DatastoreRemovalSuccess += $Datastore.Name
}
catch {
$DatastoreRemovalFailure += $Datastore.Name
}
}
else {
Write-Error ($Datastore.Name + " *** " + " *** CanonicalName mismatch with SharePoint Record")
}
}
#----------------------------------------------------------------------------------------------------------------------------------------------------
#Clusters
#Get cluster that VM resides in
foreach ($VM in $VMs){
Get-VM $VM | Get-Datastore | Select-Object Name
}
#Get VMs with Resource Reservations
$Cluster = 'TEL1'
$VMs = Get-Cluster $Cluster | Get-VM
$VMs2 = Get-VM | Where-Object {$_.ExtensionData.ResourceConfig.MemoryAllocation.Reservation -ne "0" -or $_.ExtensionData.ResourceConfig.CpuAllocation.Reservation -ne "0"}
#----------------------------------------------------------------------------------------------------------------------------------------------------
#Tags
$VMs=@"
itdintrpmgrp1.nd.gov
"@
$VMs=ConvertTo-Array -MultiLineString $VMs
#Spectrum Protect for VE
$TagCat = "Backup Management (IBM Spectrum Protect)"
$TagName = "Included"
#RPO
$TagCat = "VR RPO"
$TagName = "ABR"
$TagName = "RPO 0:15"
$TagName = "RPO 0:30"
$TagName = "RPO 1:00"
$TagName = "RPO 2:00"
$TagName = "RPO 4:00"
$TagName = "RPO 8:00"
#VR Datastores
$TagCat = "VR Datastores"
$TagName = "VMAVAYA2_210_A9K_VR"
$TagName = "VMLINUX2_212_A9K_VR"
$TagName = "VMLINUX2_213_A9K_VR"
$TagName = "VMSQL2_218_A9K_VR"
$TagName = "VMTEL2_220_A9K_VR"
$TagName = "VMTEL2_221_A9K_VR"
$TagName = "VMWAS2_222_A9K_VR"
$TagName = "VMWAS2_223_A9K_VR"
$TagName = "VMWINDOWS2_224_A9K_VR"
$TagName = "VMWINDOWS2_225_A9K_VR"
$TagName = "VMWINDOWS2_226_A9K_VR"
#SRM Type
$TagCat = "SRM Type"
$TagName = "SRM Reserved"
$TagName = "SRM Repurposed Suspend"
$TagName = "SRM Repurposed"
#HA Host
$TagCat = "HA"
$TagName = "Dedicated HA Host"
#Assign Tag
foreach ($VM in $VMs){
$VM = Get-VM $VM | Where-Object -Property PowerState -EQ PoweredOn
$VIServer = $VM.Uid.split('@')[1].split(':')[0]
New-TagAssignment -Entity $VM -Tag (Get-Tag -Server $VIServer -Category $TagCat -Name $TagName) -Server $VIServer
}
foreach ($VMHost in $VMHosts){
$VMHost = Get-VMHost $VMHost
$VIServer = $VMHost.Uid.split('@')[1].split(':')[0]
New-TagAssignment -Entity $VMHost -Tag (Get-Tag -Server $VIServer -Category $TagCat -Name $TagName) -Server $VIServer
}
#----------------------------------------------------------------------------------------------------------------------------------------------------
#VMhosts
$VMhosts=@"
itdbisvm-av01.nd.gov
itdbisvm-av02.nd.gov
itdbisvm-av03.nd.gov
itdbisvm-av04.nd.gov
itdbisvm-av05.nd.gov
"@
$VMhosts=ConvertTo-Array -MultiLineString $VMhosts
#VMhosts by Cluster
$VMhosts = (Get-Cluster | Where-Object -Property Name -EQ WINDOWS1 | Get-VMHost | Sort-Object).Name
#Disable Lockdown Mode
foreach ($VMhost in $VMhosts){
(Get-VMHost $VMhost | Get-View).ExitLockdownMode()
}
#Enable Lockdown Mode
(Get-VMHost $VMhost | Get-View).EnterLockdownMode()
$VMhosts = Get-Datacenter | Where-Object -Property Uid -Like "*itdvmvc*" | Get-VMHost
(Get-VMHost $Vmhosts | Get-View).EnterLockdownMode()
foreach ($VMhost in $VMhosts){
(Get-VMHost $VMhost | Get-View).EnterLockdownMode()
}
#Enable SSH services
Get-VMHost $VMhost | Get-VMHostService | Where-Object {$_.Label -eq "SSH"} | Start-VMHostService
Get-VMHost $VMhost | Get-VMHostService | Where-Object {$_.Label -eq "ESXi Shell"} | Start-VMHostService
#Get Lockdown Status for all VMhosts
$VMhosts = Get-Datacenter | Where-Object -Property Uid -Like "*itdvmvc*" | Get-VMHost
$Lockdown = @{N="Lockdown";E={$_.Extensiondata.Config.adminDisabled}}
Get-VMHost $VMhosts | Select-Object Name,$Lockdown
#Disable Alarms
foreach ($VMhost in $VMhosts){
$disableHost = Get-VMhost $VMhost
$viServer = $disableHost.Uid.Split('@')[1].Split(':')[0]
$alarmMgr = Get-View AlarmManager -Server $viServer
$alarmEnabled = $disableHost.ExtensionData.AlarmActionsEnabled
if ($alarmEnabled -eq $true){
$alarmMgr.EnableAlarmActions($disableHost.ExtensionData.MoRef,$false)
}
$disableHost = $null
}
#Enable Alarms
foreach ($VMhost in $VMhosts){
$enableHost = Get-VMhost $VMhost
$viServer = $enableHost.Uid.Split('@')[1].Split(':')[0]
$alarmMgr = Get-View AlarmManager -Server $viServer
$alarmEnabled = $enableHost.ExtensionData.AlarmActionsEnabled
if ($alarmEnabled -eq $false){
$alarmMgr.EnableAlarmActions($enableHost.ExtensionData.MoRef,$true)
}
$enableHost = $null
}
#----------------------------------------------------------------------------------------------------------------------------------------------------
#Disk Space
$VMs=@"
itdcndhhpdb.nd.gov
itdcndhhpdbdr.nd.gov
itdcndhfpdb.nd.gov
itdcndhfpdbdr.nd.gov
"@
$VMs=ConvertTo-Array -MultiLineString $VMs
$export = 'C:\temp\usedspace.csv'
Get-VM $VMs | Select-Object Name,@{n="UsedSpaceGB"; e={[math]::round($_.UsedSpaceGB )}},@{n="ProvisionedSpaceGB"; e={[math]::round($_.ProvisionedSpaceGB )}} -OutVariable Avaya1 | Export-Csv $export
Get-VM $VMs | Select-Object Name,@{n="UsedSpaceGB"; e={[math]::round($_.UsedSpaceGB )}},@{n="ProvisionedSpaceGB"; e={[math]::round($_.ProvisionedSpaceGB )}} -OutVariable Avaya1 | Export-Csv $export -Append
Get-VM $VMs | Select-Object Name,@{n="UsedSpaceGB"; e={[math]::round($_.UsedSpaceGB )}},@{n="ProvisionedSpaceGB"; e={[math]::round($_.ProvisionedSpaceGB )}} -OutVariable Linux1 | Export-Csv $export -Append
Get-VM $VMs | Select-Object Name,@{n="UsedSpaceGB"; e={[math]::round($_.UsedSpaceGB )}},@{n="ProvisionedSpaceGB"; e={[math]::round($_.ProvisionedSpaceGB )}} -OutVariable ODM1 | Export-Csv $export -Append
Get-VM $VMs | Select-Object Name,@{n="UsedSpaceGB"; e={[math]::round($_.UsedSpaceGB )}},@{n="ProvisionedSpaceGB"; e={[math]::round($_.ProvisionedSpaceGB )}} -OutVariable PS1 | Export-Csv $export -Append
Get-VM $VMs | Select-Object Name,@{n="UsedSpaceGB"; e={[math]::round($_.UsedSpaceGB )}},@{n="ProvisionedSpaceGB"; e={[math]::round($_.ProvisionedSpaceGB )}} -OutVariable WAS1 | Export-Csv $export -Append
Get-VM $WindowsVMs | Select-Object Name,@{n="UsedSpaceGB"; e={[math]::round($_.UsedSpaceGB )}},@{n="ProvisionedSpaceGB"; e={[math]::round($_.ProvisionedSpaceGB )}} -OutVariable Windows1 | Export-Csv $export -Append
#----------------------------------------------------------------------------------------------------------------------------------------------------
$export = "C:\temp2\usedspace.csv"
Export-Csv -Path $export -InputObject $Avaya1
Get-VM $VMs | Select-Object @{n="Cluster"; e={($_ | Get-Cluster).Name}},Name,@{n="UsedSpaceGB"; e={[math]::round($_.UsedSpaceGB )}},@{n="ProvisionedSpaceGB"; e={[math]::round($_.ProvisionedSpaceGB )}} -OutVariable Avaya1 | Export-Csv $export