I am trying to get a list of snapshots to show up and I get the “An item with the same key has already been added.” when I try to populate new-udgrid… Here is my code as I am unsure where to go from here.
Get-UDDashboard | Stop-UDDashboard
$null = Set-PowerCLIConfiguration -DefaultVIServerMode Multiple -Scope User -Confirm:$false
$Cache:Creds = Get-Credential -Credential $(whoami)
#####
$Every60Sec = New-UDEndpointSchedule -Every 60 -Second
$Schedule = New-UDEndpoint -Schedule $Every60Sec -Endpoint {
$Cache:EndpointError = $false
$Cache:vCenterServer = 'vcenter.domain.org'
if (!($global:DefaultVIServer.Name -eq $Cache:vCenterServer)){
try{
$Cache:VCSession = Connect-VIServer -Server $Cache:vCenterServer -Credential $Cache:Creds -ErrorAction Stop
}
catch{
$Cache:EndpointError = $_.Exception.Message
}
}
$Cache:ViServerList = $global:DefaultVIServer
}
$pages = @()
$pages += New-UDPage -Name "home" -Content {
New-UDRow {
New-UDCollection -Content {
New-UDCollectionItem -Content {"PS Version: $([string]$PSVersionTable.PSVersion)"}
New-UDCollectionItem -Content {"Host: $($Host.Name)"}
New-UDCollectionItem -Content {"OS: $((gwmi win32_operatingsystem).caption)"}
New-UDCollectionItem -Content {".Net Version: $((Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full').Release)"}
}
}
New-UDRow {
New-UDCard -Title "PowerCli Version" -Content {
Get-Module -ListAvailable | where{$_.Name -eq 'VMware.VimAutomation.Core'} | foreach{
New-UDRow{"$($_.Name) - $($_.Version) - $($_.Path)"}
}
}
}
New-UDRow -Endpoint {
New-UdGrid -Title "Snapshot" -Headers @("VM", "Created", "Name", "Description") -Properties @("VM", "Created", "Name", "Description") -Endpoint {
$null = Connect-VIServer -Server $Cache:ViServerList.Name -Session $Cache:ViServerList.SessionSecret
$Snapshot = get-vm | get-snapshot | Select-Object vm, created, Name, Description
$Snapshot | Out-UDGridData
}
}
}
$Dashboard = New-UDDashboard -Title 'vmware test' -Page $pages
Start-UDDashboard -Port 10001 -Dashboard $Dashboard -Endpoint @($Schedule)