Because i found no needful Example of a PowerShell Example of a PRTG Advanced Custom Sensor and i dislike XML. I worked out an PowerShell Example of a PRTG Advanced Custom Sensor with use of JSON Hope this helps some one else to get a faster start on it.
See also: https://www.paessler.com/manuals/prtg/custom_sensors#advanced_sensors
<#
Sample Exe/Script Advanced sensor
Returns four sensor channels with static values to standard OUT
Predefines limits for one channel
See: https://www.paessler.com/manuals/prtg/custom_sensors#advanced_sensors
Output can be with the following commands
Write-Host $XMLResult
or
Write-Host $JsonResult
Write-Output $XMLResult
or
Write-Host $JsonResult
# or simply return the xml / json text without any command
$XMLResult
or
$JsonResult
This Example uses JSON for output at the end
#>
$XMLResult = @"
<prtg>
<result>
<channel>Demo Minimum Example</channel>
<value>3</value>
</result>
<result>
<channel>Demo Disk Free</channel>
<unit>Percent</unit>
<mode>Absolute</mode>
<showChart>1</showChart>
<showTable>1</showTable>
<warning>0</warning>
<float>1</float>
<value>38.4487</value>
<LimitMaxError>80</LimitMaxError>
<LimitMaxWarning>37</LimitMaxWarning>
<LimitWarningMsg>My custom note for warnings</LimitWarningMsg>
<LimitErrorMsg>My custom note for errors</LimitErrorMsg>
<LimitMode>1</LimitMode>
</result>
<result>
<channel>Demo Network Speed</channel>
<unit>SpeedNet</unit>
<volumeSize>MegaBit</volumeSize>
<mode>Absolute</mode>
<showChart>1</showChart>
<showTable>1</showTable>
<warning>0</warning>
<float>0</float>
<value>124487000</value>
</result>
<result>
<channel>Demo Custom</channel>
<unit>Custom</unit>
<customUnit>Pieces</customUnit>
<mode>Absolute</mode>
<showChart>1</showChart>
<showTable>1</showTable>
<warning>0</warning>
<float>0</float>
<value>855</value>
</result>
<text>Demo values. OS: $($env:OS)</text>
</prtg>
"@
$JsonResult = @"
{
"prtg": {
"result": [
{
"channel": "Demo Minimum Example",
"value": "3"
},
{
"channel": "Demo Disk Free",
"unit": "Percent",
"mode": "Absolute",
"showChart": "1",
"showTable": "1",
"warning": "0",
"float": "1",
"value": "38.4487",
"LimitMaxError": "80",
"LimitMaxWarning": "37",
"LimitWarningMsg": "My custom note for warnings",
"LimitErrorMsg": "My custom note for errors",
"LimitMode": "1"
},
{
"channel": "Demo Network Speed",
"unit": "SpeedNet",
"volumeSize": "MegaBit",
"mode": "Absolute",
"showChart": "1",
"showTable": "1",
"warning": "0",
"float": "0",
"value": "124487000"
},
{
"channel": "Demo Custom",
"unit": "Custom",
"customUnit": "Pieces",
"mode": "Absolute",
"showChart": "1",
"showTable": "1",
"warning": "0",
"float": "0",
"value": "855"
}
],
"text": "Demo values. OS: $($env:OS)"
}
}
"@
$JsonResult
Article Comments
Attention: This article is a record of a conversation with the Paessler support team. The information in this conversation is not updated to preserve the historical record. As a result, some of the information or recommendations in this conversation might be out of date.
Hello there,
Thank you for your KB post.
And tank you for creating and sharing this script.
Kind regards,
Sasa Ignjatovic, Tech Support Team
Sep, 2019 - Permalink