Hi
The below script is running slow. Please help me.
[CmdletBinding()]
Param(
[Parameter(Position =0,
Mandatory=$true,
ValueFromPipeLine=$true,
ValueFromPipeLineByPropertyName=$true,
HelpMessage = 'VCenter server to query',
ParameterSetName = 'vCenterName')]
[Alias('vCenter')]
[String[]]$vCenterName,
[Switch]$ShowProgress
)
foreach($vc in $vCenterName) {
Connect-VIServer $vc
}
#Install-Module -Name ImportExcel -Credential -Force
$fileName = “C::\script\VM-report1-new.xlsx”
foreach($vc in $global:DefaultVIServers){
$table = @()
ForEach($VM in (Get-Cluster XXXX-Cluster | Get-VM)){
$Snapshots = $VM | Get-Snapshot
$Report = "" | Select-Object VMname,vmCreatedByUser,vmCreatedDate,ESXname,ClusterName,MemoryGB,vCPUcount,Folder,VMXname,VmdkSizeGB,DatastoreName,SnapshotCount,Owner,Pod_vmcount
$Report.VMName = $VM.name
$Report.vmCreatedByUser = Get-VIEvent $VM | sort createdTime | select -first 1 | select UserName | % {$_.UserName.split("\")[1]}
$Report.vmCreatedDate = Get-VIEvent $VM | sort createdTime | select -first 1 | select CreatedTime
$Report.ESXname = $VM.VMHost
$Report.ClusterName = ($VM | Get-Cluster).Name
$Report.MemoryGB = $VM.MemoryMB/1024
$Report.vCPUcount = $VM.NumCpu | %{$_ -gt 4}
$Report.Folder = $VM.Folder
$Report.VMXname = $VM.ExtensionData.Config.Files.VmPathName.Split("/")[1]
$Report.VmdkSizeGB = $VM.UsedSpaceGB
$Report.DatastoreName = $VM.ExtensionDataConfig.DatastoreUrl
$Report.SnapshotCount = ($VM | Get-Snapshot).Count
$Report.Owner = $VM | Get-VIPermission | Where-Object {$_.Role -like "Lab Specific VM Folder*"} | select Principal | % {$_.Principal.split("\")[1]}
$Report.Pod_vmcount = get-resourcePool -location *XXX* | select Name,@{N=“VMcount“;E={($_ |Get-VM).Count}} | Where-Object VMcount -eq 0
$table += $Report
}
$table | Export-Excel -Path $fileName -WorkSheetname "$($vc.Name)"
Thanks
Ragahv