VMware Cloud Community
ganapa2000
Hot Shot
Hot Shot
Jump to solution

vCenter details shows blank

Hi,

I am unable to get the vCenter details for below script as it shows blank without any error.

vCenter = ([uri]$event.VM.ExtensionData.Client.ServiceUrl).Host

 

Script

$hours = 192 # Number of hours back
$tasknumber = 999 # Windowsize for task collector
$eventnumber = 100 # Windowsize for event collector
$report = @()
$taskMgr = Get-View TaskManager
$eventMgr = Get-View eventManager
$tFilter = New-Object VMware.Vim.TaskFilterSpec
$tFilter.Time = New-Object VMware.Vim.TaskFilterSpecByTime
$tFilter.Time.beginTime = (Get-Date).AddHours(-$hours)
$tFilter.Time.timeType = "startedTime"
$tCollector = Get-View ($taskMgr.CreateCollectorForTasks($tFilter))
$dummy = $tCollector.RewindCollector
$tasks = $tCollector.ReadNextTasks($tasknumber)
while ($tasks) {
$tasks | Where-Object { $_.Name -eq "ReconfigVM_Task" } | ForEach-Object {
$task = $_
$eFilter = New-Object VMware.Vim.EventFilterSpec
$eFilter.eventChainId = $task.EventChainId
$eCollector = Get-View ($eventMgr.CreateCollectorForEvents($eFilter))
$events = $eCollector.ReadNextEvents($eventnumber)
while ($events) {
$events | ForEach-Object {
$event = $_
switch ($event.GetType().Name) {
"VmReconfiguredEvent" {
$obj = [ordered]@{
vCenter = ([uri]$event.VM.ExtensionData.Client.ServiceUrl).Host
Folder = (Get-VM $event.VM.Name).Folder.Name
VMname = $task.EntityName
Start = $task.StartTime
Finish = $task.CompleteTime
Result = $task.State
User = $task.Reason.UserName
Added = ''
Modified = ''
Deleted = ''
}
if($event.ConfigChanges.Added){
$obj.Modified = $event.ConfigChanges.Added -replace "`n", ''
}
if ($event.ConfigChanges.Modified) {
$obj.Modified = $event.ConfigChanges.Modified -replace "`n",''
}
if ($event.ConfigChanges.Deleted) {
$obj.Modified = $event.ConfigChanges.Deleted -replace "`n", ''
}
$report += New-Object -TypeName PSObject -Property $obj
}
Default {}
}
}
$events = $eCollector.ReadNextEvents($eventnumber)
}
$ecollection = $eCollector.ReadNextEvents($eventnumber)
# By default 32 event collectors are allowed. Destroy this event collector.
$eCollector.DestroyCollector()
}
$tasks = $tCollector.ReadNextTasks($tasknumber)
}
# By default 32 task collectors are allowed. Destroy this task collector.
$tCollector.DestroyCollector()
$report | Sort-Object -Property Start 

0 Kudos
1 Solution

Accepted Solutions
LucD
Leadership
Leadership
Jump to solution

The VM property of an event does not contain the full VirtualMachine object, you will need to do a Get-VM with the name.

vCenter = ([uri](Get-VM -Name $event.VM.Name).ExtensionData.Client.ServiceUrl).Host


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

View solution in original post

0 Kudos
2 Replies
LucD
Leadership
Leadership
Jump to solution

The VM property of an event does not contain the full VirtualMachine object, you will need to do a Get-VM with the name.

vCenter = ([uri](Get-VM -Name $event.VM.Name).ExtensionData.Client.ServiceUrl).Host


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

0 Kudos
ganapa2000
Hot Shot
Hot Shot
Jump to solution

Thanks a lot. That worked perfectly 🙂

0 Kudos