TypeDefinition/TypeDefinition.ps1
#Author: Andreas Bellstedt #region PRTG $TypeName = "PRTG" Write-Verbose "Update TypeData $TypeName" Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName ObjID -Value { [int32]$this.id[0] } -Force Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName Type -Value { $this.LocalName.substring(0,1).toupper()+$this.LocalName.substring(1).tolower() } -Force Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName Status -Value { switch ($this.status_raw) { '1' { "Unknown" } '2' { "Scanning" } '3' { "Up" } '4' { "Warning" } '5' { "Down" } '6' { "No Probe" } '7' { "Paused by User" } '8' { "Paused by Dependency" } '9' { "Paused by Schedule" } '10' { "Unusual" } '11' { "Not Licensed" } '12' { "Paused Until" } Default { $null } } } -Force Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName CommentExist -Value { [boolean]$this.Hascomment } -Force Update-TypeData -TypeName $TypeName -DefaultDisplayPropertySet ObjID, Name, Type, Status, Tags, Active, Priority, CommentExist, URL -DefaultDisplayProperty ObjID -DefaultKeyPropertySet ObjID -Force <# Get-TypeData -TypeName $TypeName Remove-TypeData -TypeName $TypeName #> #endregion PRTG #region PRTG.SENSORTREE $TypeName = "PRTG.SensorTree" Write-Verbose "Update TypeData $TypeName" Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName ObjID -Value { [int32]$this.prtg.sensortree.nodes.group.id[0] } -Force Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName Type -Value { $this.prtg.sensortree.nodes.group.LocalName } -Force Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName Name -Value { $this.prtg.sensortree.nodes.group.name } -Force Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName URL -Value { $this.prtg.sensortree.nodes.group.url } -Force Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName Priority -Value { $this.prtg.sensortree.nodes.group.priority } -Force Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName Status_raw -Value { $this.prtg.sensortree.nodes.group.status_raw } -Force Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName Active -Value { $this.prtg.sensortree.nodes.group.active } -Force Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName Probes -Value { $this.prtg.sensortree.nodes.group.probenode } -Force Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName Tags -Value { $this.prtg.sensortree.nodes.group.tags } -Force Update-TypeData -TypeName $TypeName -DefaultDisplayPropertySet ObjID, Name, Type, Status, Tags, Probes -DefaultDisplayProperty ObjID -DefaultKeyPropertySet ObjID -Force <# Get-TypeData -TypeName $TypeName Remove-TypeData -TypeName $TypeName #> #endregion PRTG.SENSORTREE #region PRTG.OBJECT $TypeName = "PRTG.Object" Write-Verbose "Update TypeData $TypeName" Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -Force -MemberName Fullname -Value { $x = $this.id[0] $count = 0 $local:FullName = "{$($this.Name)}" if($x -ne 0) { if($this.ParentNode) { $parent = $this.ParentNode } do { $x = $parent.id[0] if($x -ne 0) { $local:FullName = "{$($parent.name)}." + $local:FullName if($parent.ParentNode) { $parent = $parent.ParentNode } $count++ } } until($x -eq 0) } return $FullName } Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -Force -MemberName tagsInherited -Value { $x = $this.id[0] $count = 0 $local:tags = "" if($x -ne 0) { if($this.ParentNode) { $parent = $this.ParentNode } do { $x = $parent.id[0] if($x -ne 0) { $local:tags = "$($parent.tags)$(if($parent.tags){" "})" + $local:tags if($parent.ParentNode) { $parent = $parent.ParentNode } $count++ } } until($x -eq 0) } return $local:tags.Trim() } Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -Force -MemberName tagsAll -Value { return ($this.tagsInherited + " " + $this.tags).Trim() } Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -Force -MemberName Hierarchy -Value { $x = $this.id[0] $count = 1 if($x -ne 0) { if($this.ParentNode) { $parent = $this.ParentNode } do { $x = $parent.id[0] if($x -ne 0) { if($parent.ParentNode) { $parent = $parent.ParentNode } $count++ } } until($x -eq 0) } return $count } Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -Force -MemberName Parent -Value { $this.ParentNode.Name } Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName ObjID -Value { [int32]$this.id[0] } -Force Update-TypeData -TypeName $TypeName -DefaultDisplayPropertySet ObjID, Name, Type, Status, Tags, TagsInherited, Active, Priority, CommentExist, URL, Hierarchy, Fullname -DefaultDisplayProperty ObjID -DefaultKeyPropertySet ObjID -Force <# Get-TypeData -TypeName $TypeName Remove-TypeData -TypeName $TypeName #> #endregion PRTG.OBJECT #region PRTG.OBJECT.PROBENODE $part = "probenode" $TypeName = "PRTG.Object.$($part.substring(0,1).toupper())$($part.substring(1).tolower())" Write-Verbose "Update TypeData $TypeName" Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName Members -Value { $collection = @() if($this.device) { $collection += $this.device } if($this.group) { $collection += $this.group } return $collection } -Force Update-TypeData -TypeName $TypeName -DefaultDisplayPropertySet ObjID, Name, Type, Status, Tags, TagsInherited, Active, Priority, CommentExist, DeviceIcon, URL, Group, Device, Hierarchy, Fullname -DefaultDisplayProperty ObjID -DefaultKeyPropertySet ObjID -Force #endregion PRTG.OBJECT.PROBENODE #region PRTG.OBJECT.GROUP $part = "group" $TypeName = "PRTG.Object.$($part.substring(0,1).toupper())$($part.substring(1).tolower())" Write-Verbose "Update TypeData $TypeName" Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -MemberName Members -Value { $collection = @() if($this.device) { $collection += $this.device } if($this.group) { $collection += $this.group } return $collection } -Force Update-TypeData -TypeName $TypeName -DefaultDisplayPropertySet ObjID, Name, Type, Status, Tags, TagsInherited, Active, Priority, CommentExist, DeviceIcon, URL, Group, Device, Hierarchy, Fullname -DefaultDisplayProperty ObjID -DefaultKeyPropertySet ObjID -Force #endregion PRTG.OBJECT.GROUP #region PRTG.OBJECT.DEVICE $part = "device" $TypeName = "PRTG.Object.$($part.substring(0,1).toupper())$($part.substring(1).tolower())" Write-Verbose "Update TypeData $TypeName" Update-TypeData -TypeName $TypeName -DefaultDisplayPropertySet ObjID, Name, Type, Status, Host, Tags, TagsInherited, Active, Priority, CommentExist, DeviceIcon, URL, Sensor, Hierarchy, Fullname -DefaultDisplayProperty ObjID -DefaultKeyPropertySet ObjID -Force #endregion PRTG.OBJECT.DEVICE #region PRTG.OBJECT.SENSOR $part = "sensor" $TypeName = "PRTG.Object.$($part.substring(0,1).toupper())$($part.substring(1).tolower())" Write-Verbose "Update TypeData $TypeName" Update-TypeData -TypeName $TypeName -MemberType ScriptProperty -Force -MemberName IntervalText -Value { $timespan = [timespan]::fromseconds($this.interval) if($timespan.TotalDays -ge 1) { "$($timespan.TotalDays) days" } elseif ($timespan.TotalHours -ge 1) { "$($timespan.TotalHours) hours" } elseif ($timespan.TotalMinutes -ge 1) { "$($timespan.TotalMinutes) minutes" } } Update-TypeData -TypeName $TypeName -DefaultDisplayPropertySet ObjID, Name, Type, Status, IntervalText, Interval, Sensorkind, SensorType, DataMode, LastValue, StatusMessage, Tags, TagsInherited, Active, Priority, CommentExist, URL, Parent, Hierarchy, Fullname -DefaultDisplayProperty ObjID -DefaultKeyPropertySet ObjID -Force #endregion PRTG.OBJECT.SENSOR #region PRTG.OBJECT.COMPARE $part = "compare" $TypeName = "PRTG.Object.$($part.substring(0,1).toupper())$($part.substring(1).tolower())" Write-Verbose "Update TypeData $TypeName" Update-TypeData -TypeName $TypeName -DefaultDisplayPropertySet ObjID, Name, SideIndicator, SideIndicatorStatus, SideIndicatorDescription, PropertyDifferenceReport, Fullname -DefaultDisplayProperty Name -DefaultKeyPropertySet ObjID -Force #endregion PRTG.OBJECT.DEVICE #region Test <# Get-TypeData -TypeName $TypeName Remove-TypeData -TypeName $TypeName Get-PRTGObject -Type $part -SensorTree $PRTG | gm Get-PRTGObject -Type $part -SensorTree $PRTG | select * -Last 1 | fl * $object = Get-PRTGObject -Type $part -SensorTree $PRTG | select * -Last 1 $object.pstypenames.Insert(0,$TypeName) $object.pstypenames.Insert(1,"PRTG.Object") $object.pstypenames.Insert(2,"PRTG") $object.pstypenames $object | gm $object $object | ft $object.pstypenames.remove($TypeName) $object.pstypenames.remove("PRTG.Object") $object.pstypenames.remove("PRTG") #> #endregion Test |