Resolved.
The script worksonly 4 hours.
In the firstscript,I forgot tospecify the "-Location $ESXHost",
cls
$watch= [System.Diagnostics.Stopwatch]::StartNew()
$watch.Start() #Start time
$ErrorActionPreference="SilentlyContinue"
$name="Ann 1"
$name1="Ann 2"
$name2="Ann 3"
$name3="Ann 4"
$myCol= @()
$ESXHosts=Get-VMHost | select-ExpName
foreach ($ESXHostin$ESXHosts){
$RPs=Get-ResourcePool-Location$ESXHost | ?{$_.Name -ne"Resources"}
$VMs=Get-VM-Location$ESXHost# - in the first script I forgot to specify
foreach ($VMin$VMs){
$Ann=$vm | Get-Annotation-CustomAttribute$name, $name1, $name2 ,$name3
$VIe=$vm | Get-VIEvent | Where-Object {$_.userName -ne""`
-and$_.userName -ne"User"-and$_.userName -ne"vpxuser"`
-and$_.userName -ne"admin1"-and$_.userName -ne"admin2"`
-and$_.userName -ne"admin3"-and$_.userName -ne"admin4"`
-and$_.userName -ne"admin5"} | select-First1-ExpUserName
$Details="" | Select ESXHost,ResourcePool,VMName,$name,$name1,$name2,$name3,UserName
$Details.ESXHost =$ESXHost
$Details.ResourcePool =$VM.ResourcePool.Name
$Details.VMName =$VM.Name
$Details.$name=$Ann.value[0]
$Details.$name1=$Ann.value[1]
$Details.$name2=$Ann.value[2]
$Details.$name3=$Ann.value[3]
$Details.UserName =$VIe | Out-String
$myCol+=$Details
}
Write-Host$ESXHost
}
$myCol | Export-Csv-Delimiter"`t"-PathC:\PowerCLI\Report\Annotation.csv-encoding"unicode"–NoTypeInformation
$watch.Stop() #Stop time
Write-Host$watch.Elapsed #Run time