Public/Get-GrafanaPanel.ps1
<# .SYNOPSIS Returns a Grafana Panel that can be used later to add targets and alerts to it. .DESCRIPTION This cmdlet will return a Grafana Panel that can be used to add targets and alerts to it, You must provide either Dashboard (a PowerGrafana.Dashboard object) or a DashboardId (A uid for an existing dashboard). .PARAMETER Panel A PowerGrafana.Panel that represents a panel, this is added to support other cmdlets that depend on this one, this is an optional parameter and can be ignored if PanelId is provided. .PARAMETER PanelId A number representing a panel in Grafana. .PARAMETER Dashboard [Optional] a PowerGrafana.Dashboard object, this will be used to obtain the uid of the dashboard. .PARAMETER DashboardId [Optional] the uid of an existing dashboard .EXAMPLE Get-GrafanaPanel -PanelId 2 -Dashboard $GrafanaDashboard .EXAMPLE Get-GrafanaPanel -PanelId 2 -DashboardId "u2isj3" .NOTES .LINK #> function Get-GrafanaPanel { param ( [Parameter(Mandatory = $false)] [PSTypeName('PowerGrafana.Panel')] $Panel, [Parameter(Mandatory = $false)] $PanelId, [Parameter(Mandatory = $false)] $Dashboard, [Parameter(Mandatory = $false)] $DashboardId ) $URI = Get-GrafanaURI $Header = New-GrafanaHeader if ([string]::IsNullOrEmpty($Dashboard)) { $QueryUri = $("$URI/api/dashboards/uid/" + $DashboardId) } else { $QueryUri = $("$URI/api/dashboards/uid/" + $Dashboard.uid) } if ([string]::IsNullOrEmpty($Panel)) { $QueryPanelId = $PanelId } else { $QueryPanelId = $Panel.id } $RetrievedDashboard = Invoke-RestMethod -Method Get -Headers $Header -Uri $QueryUri $PanelFound = $RetrievedDashboard.dashboard.panels | where-object -property id -eq $QueryPanelId $OutputPanel = @{} $OutputPanel = $PanelFound | ConvertTo-Json -Depth 8 | ConvertFrom-Json -Depth 8 -AsHashtable $OutputPanel.PSObject.TypeNames.Insert(0, 'PowerGrafana.Panel') return $OutputPanel } |