I'm sure the script itself is fine but the parameters at the end for prtg I'm sure I'm getting wrong. What do you guys think?
$OU = "OU=test,OU=test,DC=test,DC=com"
- script to search active directory
$users = Foreach($OU in $OUs){ Get-ADUser -filter {enabled -eq $true} -SearchBase $OU -Properties lastlogondate | where-object {$_.lastlogondate -lt (get-date).AddDays(+60)} | Select-Object SamAccountName } #Count results $a = @($users.count) #Write to prtg Write-Host "<prtg>" Write-Host "<result>" "<channel>Users Count</channel>" "<value>"$a"</value>" "</result>" Write-Host "</prtg>"
Article Comments
Thank you for your help! I made the modifications you recommended but it seems to be throwing the same error as previous without much change. The PS1 placement was correct thankfully.
xml: The returned xml does not match the expected schema. (Code: PE233) - JSON: The returned JSON does not match the expected structure (Invalid JSON). (Code: PE231)
Mar, 2022 - Permalink
I suspect the variable $a to be incorrect and breaking the output. I invite you to execute the script manually and check which value it returns as well as its type (string, array, etc.) with $a | Get-Member
Can you please also provide the output when executing the script manually with the PowerShell console (x86).
Mar, 2022 - Permalink
Hello,
Thank you for your message.
Please, note that we can provide limited support regarding customisations. To easily troubleshoot issues, I invite you to use a try catch statement and then return the error in the sensor message field, as illustrated below:
The code above also uses Write-Output to return the data to PRTG instead of Write-Host which can generate issues with the PowerShell security enhancements added to PRTG.
Finally, make sure to copy the script in the EXEXML ("C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML") folder of the corresponding probe server and add an EXE/Script Advanced sensor to use it.
Regards.
Mar, 2022 - Permalink