Lokal Check Ausgabeproblem mit Powershellscript

Hallo zusammen,

ich habe in unserer Umgebung ein Phänomen, was ich mir nicht erklären kann.

Ich habe ein Powershellscript, welches im AD aktive Benutzer auslesen und zählen soll. Das funktioniert auch tadellos in der Powershell und auch der check_mk_agent.exe scheint es richtig wieder zu geben:

Jedoch weicht die Ausgabe in der Serviceübersicht IMMER um 107 User ab:

Was habe ich schon probiert?

  • Verschiedene Formatierungen der Ausgabe. Ich habe mich hier aber nach besten Wissen an die Doku gehalten.
  • Useraccount, mit dem der Dienst läuft getauscht (Testweise mal den gleichen genommen, mit dem ich das Script lokal ausführen kann)

Egal was, es funktioniert, nur ist immer die Zahl abweichend. Wer hat eine Idee?

Ich habe noch etwas getestet…

Mein Script schreibt jetzt alles Mögliche in ein Textfile zum Debuggen. Alle Werte und mittels whoami der Userkontext wird in ein Textfile geschrieben.

Ich habe einen Service-Account (nennen wir ihn mal “sa_c”) erstellt. Dieser führt jetzt den CheckMK dienst aus. Laut meinem Log ist es auch der User, unter dessen Kontext das ps1 ausgeführt wird.

Wenn ich mich als der User am DC anmelde, wo das Skript als lokaler check liegt und es manuell ausführe, wirft es mir die richtigen Zahlen zurück.

Wenn das Skript aber vom Agent unter dem GLEICHEN Userkontext ausgeführt wird, zählt er nicht mehr richtig.

Ich habe keine Ahnung warum.

edit: glatt das Bild vergessen…

Neue Erkenntnis:

Wenn ich die Powershell “als Administrator” ausführe und dann das Skript lade, komme ich auf die gleichen Werte wie CheckMK.

Es ist also Get-ADuser, welches verschiedene Ergebnisse liefert…

EDIT:
Das war die Lösung. Wie auch hier beschrieben.

Ich tappte beim Schreiben und Testen des Skripts die ganze Zeit im dunklen.
Check_MK hat es die ganze Zeit einfach richtig gemacht und das ps1 im Administratorkontext ausgeführt. Dann zieht auch der Filter nach “enabled -eq $true”…

Die Powershell Scripte laufen im CheckMK normal als “Local System” Context. Der ist meist “ähnlich” dem lokalen Admin kann aber auch unterschiedlich sein im Ergebnis.