Can you try that routine like this ?
$oneMonth = (Get-Date).AddDays(-31)
$entity = Get-Folder -Name datacenters
$events = Get-VIEventPlus -Entity $entity -EventType VmPoweredOnEvent -Recurse -FullMessage
$events | Group-Object -Property {$_.Vm.Name} | %{
$_.Group | Sort-Object -Property CreatedTime -Descending |
Select -First 1 |
where {$_.CreatedTime -lt $oneMonth -and (Get-VM -Name $_.Vm.Name -ErrorAction SilentlyContinue).PowerState -eq "PoweredOff"} | %{
$obj = New-Object -TypeName PSObject -Property @{
VM = $_.VM.Name
LastPoweredOn = $_.CreatedTime
User = $_.VM.Name | Select UserName
Owner = (Get-VM $_.Vm.Name).CustomFields.Item("OwnerDL")
}
writedata $obj.VM $obj.LastPowredOn $obj.User $obj.Owner
}
}