NinjaOne veröffentlichte im Jahr 2021 die Funktion ‚Benutzerdefinierte Felder‘, die unserer Plattform ein neues Maß an Flexibilität, Anpassbarkeit und Automatisierungsmöglichkeiten verleiht. Bei benutzerdefinierten Feldern handelt es sich um eine Experten-Funktion, die erst eingerichtet werden muss, aber sobald Sie damit beginnen, eröffnen sich Ihnen nahezu unbegrenzte Möglichkeiten.
Im ersten Teil dieses Leitfadens demonstrieren wir Ihnen zwei wirkungsvolle Praxisbeispiele für den Einsatz benutzerdefinierter Felder in NinjaOne:
Ein kurzer Überblick zu benutzerdefinierten Feldern in NinjaOne
Rollen für benutzerdefinierte Felder
In NinjaOne gibt es benutzerdefinierte Felder in zwei Kategorien – globale benutzerdefinierte Felder, die für alle Geräte unabhängig von ihrem Typ gelten, und rollenbasierte benutzerdefinierte Felder, die nur bestimmten Gerätetypen zugeordnet werden.
Ein globales benutzerdefiniertes Feld kann beispielsweise eine Art universeller Asset-ID-Nummer verwenden, die Sie allen Geräten zuordnen. Rollenbasierte benutzerdefinierte Felder können Sie zum Beispiel verwenden, um allen Workstations und Laptops einen Geräteverantwortlichen zuzuordnen, nicht jedoch den Servern.
Benutzerdefinierte Feldtypen
NinjaOne bietet über zwanzig benutzerdefinierte Feldtypen – von Text über ganze Zahlen bis hin zu Dropdown-Menü’s und Device-Mapping. Wir stellen auch UI-Elemente zur Verfügung, um benutzerdefinierte Felder benutzerfreundlicher zu gestalten.
Zugang
Jedes benutzerdefinierte Feld kann individuell auf Techniker- und Skriptzugriffe angepasst werden, so dass Sie kontrollieren können, wer Zugriff auf welche Daten erlangt.
1. Praxisbeispiel: Beinahe uneingeschränkte Monitoring-Möglichkeiten
Sobald Sie den NinjaOne-Agenten installiert haben, stellen wir Hunderte von Datenpunkten zu jedem überwachten Endpunkt zur Verfügung – von Hardware-Spezifikationen über installierte Software bis hin zur CPU-Auslastung. Dennoch sind die spezifischen Datenpunkte und Überwachungsanforderungen eines jeden Unternehmens einzigartig.
Mit benutzerdefinierten Feldern von NinjaOne können Sie nahezu jeden Datenpunkt von einem Endpunkt erfassen, speichern und überwachen. So stellen Sie sicher, dass Ihnen die Informationen vorliegen, die Sie für Ihre Entscheidungsfindung benötigen. Ein paar Beispiele von unseren Partnern:
- Identifizieren und speichern Sie den aktuellen Energieplan
- Dokumentieren Sie existierende lokale Administratorkonten
- Erhalten Sie eine Liste der geplanten Aufgaben für ein Gerät
- Überwachen Sie die CPU-Temperatur
- Überwachen Sie den Batteriezustand
So funktioniert‘s
Lassen Sie uns ein Beispiel für die Einrichtung eines benutzerdefinierten Felds und eines Skripts zur Überwachung des Batteriestands durchgehen.
Um mittels benutzerdefinierter Felder einen benutzerdefinierten Überwachungsmonitor einzurichten, benötigen Sie:
- Ein benutzerdefiniertes Feld
- Ein Skript zum Sammeln und Speichern der Daten
- Eine benutzerdefinierte Bedingung, um eine Alarmierung einzurichten
Konfiguration des benutzerdefinierten Feldes
Das benutzerdefinierte Feld wird zum Speichern von Daten verwendet, die von einem Skript zurückgegeben werden.
1) Erzeugen Sie ein neues benutzerdefiniertes Feld. Da wir den Akkustand von Laptops überwachen werden, erstellen wir ein rollenbasiertes benutzerdefiniertes Feld.
2) Im nächste Schritt erfolgt die Konfiguration des benutzerdefinierten Feldes. Da dieses Feld über ein Skript beschrieben werden soll, setzen wir den Technikerzugriff auf ‚Nur Lesen‘ und den Skriptzugriff auf ‚Lesen/Schreiben‘.
Hinweis: Wenn der Skriptzugriff nicht auf ‚Schreiben‘ oder ‚Lesen/Schreiben‘ eingestellt ist, können Sie nicht von einem Skript aus in dieses Feld hineinschreiben lassen.
3) Nun müssen wir das benutzerdefinierte Rollenfeld einer Geräterolle zuweisen. Navigieren Sie zu ‚Rollen‘ und wählen Sie den/die Rollentyp(en) aus, auf den/die Sie dieses Feld anwenden möchten. In unserem Fall wird dieses benutzerdefinierte Rollenfeld der Rolle ‚Windows Laptop‘ zugewiesen.
Einrichtung des Überwachungsmonitors
Bedingungen in NinjaOne werden zur Überwachung von Zustandsänderungen auf einem Endpunkt verwendet. NinjaOne bietet die Möglichkeit zur Überwachung benutzerdefinierter Felder. Wir werden einen Monitor einrichten, um zu prüfen, ob der Batteriestand herabgesetzt oder sehr niedrig ist.
- Navigieren Sie in der Richtlinie Ihrer Wahl zu ‚Bedingungen‘ und klicken Sie auf ‚Eine Bedingung hinzufügen‘
- Wählen Sie als Bedingungstyp ‚Benutzerdefinierte Felder‘ aus
- Wählen Sie unter ‚Benutzerdefinierter Feldwert muss beliebige Bedingungen erfüllen‘ die Option ‚Hinzufügen‘ und suchen Sie nach ‚Batteriezustand‘
- Klicken Sie auf ‚Enthält‘ und wählen Sie ‚Herabgesetzt‘
- Wiederholen Sie die Schritte 3 und 4, aber ändern Sie ‚Herabgesetzt‘ zu ‚Warung‘
- Legen Sie den Schweregrad, die Priorität, den Benachrichtigungskanal und die Ticketing-Einstellungen fest und klicken Sie auf ‚Hinzufügen‘.
Wenn die Bedingung ausgelöst wird, sieht es in etwa so aus:
Erstellung eines Skripts zum Abrufen von Daten
Nun müssen wir ein Skript schreiben, das Daten vom Endpunkt abruft und diese in unserem benutzerdefinierten Feld ablegt. Wir werden das Skript (das Sie hier finden können, wenn Sie bei Ninja angemeldet sind) anpassen.
$Battery = Get-CimInstance -ClassName win32_battery Switch ($Battery.Availability) { 1 { $Availability = "Other" ;break} 2 { $Availability = "Not using battery" ;break} 3 { $Availability = "Running or Full Power";break} 4 {$Availability = "Warning" ;break} 5 { $Availability = "In Test";break} 6 { $Availability = "Not Applicable";break} 7 { $Availability = "Power Off";break} 8 { $Availability = "Off Line";break} 9 { $Availability = "Off Duty";break} 10 {$Availability = "Degraded";break} 11 {$Availability = "Not Installed";break} 12 {$Availability = "Install Error";break} 13 { $Availability = "Power Save - Unknown";break} 14 { $Availability = "Power Save - Low Power Mode" ;break} 15 { $Availability = "Power Save - Standby";break} 16 { $Availability = "Power Cycle";break} 17 { $Availability = "Power Save - Warning";break} } $BatteryOutString = "Status: $($Battery.Status)", "Battery Name: $($Battery.name)", "Charge Remaining: $($Battery.EstimatedChargeRemaining)", "Estimated runtime: $($Battery.EstimatedRunTime)", "Availability: $Availability" | Format-Table | Out-String Ninja-Property-Set batteryState $BatteryOutString
Dieses Skript ruft Batterieinformationen ab, formatiert sie und schreibt dann in das benutzerdefinierte Feld ‚batteryStatus‘.
Das einzige Ninja-spezifische Element in diesem Powershell-Skript ist die letzte Zeile:
Ninja-Property-Set batteryState $BatteryOutString
Ninja-Property-Set ist der Powershell-Befehl von NinjaOne, um ein benutzerdefiniertes Feld auf einen bestimmten Wert zu setzen. Die Syntax lautet:
Ninja-Property-Set fieldName Value
In diesem Fall setzen wir das Feld batteryState auf den Wert, der in der Variablen $BatteryOutString gespeichert ist.
Das Hinzufügen dieses Skripts zu NinjaOne ist einfach.
- Navigieren Sie zu ‚Konfiguration‘ -> ‚Scripting‘
- Klicken Sie auf ‚Neues Skript hinzufügen‘
- Kopieren Sie den obigen Code in die IDE
- Wenn Ihr benutzerdefiniertes Feld nicht ‚batteryState‘ heißt, aktualisieren Sie den Feldnamen neben Ninja-Property-Set
- Setzen Sie die Parameter des Skripts auf
- Name: Set Battery Status
- Sprache: PowerShell
- Betriebssystem: Windows
- Architektur: Alle
- Speichern Sie das Skript
Alles zusammenfügen
Nun, da Sie Ihr benutzerdefiniertes Feld, die Bedingung und das Skript vorbereitet haben, müssen wir alles zusammenfügen, damit wir diesen automatisierten Überwachungsmonitor in Betrieb nehmen können.
Öffnen Sie die Richtlinie, der Sie Ihre Bedingung zuvor hinzugefügt haben, und navigieren Sie zu ‚Geplante Skripte‘.
Klicken Sie auf ‚Ein geplantes Skript hinzufügen‘.
Klicken Sie auf ‚Skript hinzufügen‘
Wählen Sie das oben erstellte Skript ‚Set Battery Status‘.
Sie können dieses Skript in beliebigen Intervallen ausführen lassen, so wie Sie es für nötig halten. Für eine stündliche Ausführung wählen Sie in der Dropdown-Liste ‚Zeitplan‘ und setzen Sie den Wert für die Option ‚Erfolgt jede(n)‘ auf eine Stunde. Wählen Sie dann Speichern.
Das Skript ‚Set Battery Status‘ liest nun jede Stunde Daten von allen Endpunkten, die von dieser Richtlinie verwaltet werden, und schreibt sie in unser benutzerdefiniertes Feld. Wenn der Rückgabewert an einem dieser Endpunkte ‚warnung‘ oder ‚herabgesetzt‘ enthält, erhalten wir eine Alarmierung und können entsprechende Maßnahmen in die Wege leiten.
Der gleiche Prozess kann zur Überwachung fast aller Datenpunkte verwendet werden, die von einem Endpunkt abgefragt werden können.
2. Praxisbeispiel: Erweiterte Skript-Automatisierung
NinjaOne bietet Ihnen verschiedene Möglichkeiten, Aufgaben über alle verwalteten Endpunkte hinweg zu automatisieren – von einfach bis komplex.
Die vier wichtigsten Methoden zum Starten von Automatisierungen in NinjaOne lauten:
- Geplante Skripte: Automatisierungen, die auf einem regelmäßigen Zeitplan basierend für alle Endpunkte in einer Richtlinie ausgeführt werden
- Ausgelöste Bedingungen: Automatisierungen, die durch Ereignisse, Zustandsänderungen oder Leistungsdaten von einem Endpunkt aus in Gang gesetzt werden
- Geplante Aufgaben: Automatisierungen, die auf einem regelmäßigen Zeitplan basierend für alle ausgewählten Endpunkte ausgeführt werden
- Ad-hoc-Skripte: Automatisierungen, die manuell für einen einzelnen oder mehrere Endpunkte durchgeführt werden
Mit all diesen Methoden lassen sich eine Reihe von Skripten basierend auf bestimmten Zeitpunkten oder Ereignissen initialisieren. Für sich allein genommen können diese Automatisierungsmethoden sehr leistungsfähig sein und einen großen Nutzen bringen, allerdings sind sie nicht besonders dynamisch.
Für dynamischere Automatisierungen müssen wir zwei Konzepte einführen:
- Skriptausgabebedingungen
- Benutzerdefinierte Felder
Beide Funktionen in NinjaOne ermöglichen dynamisch verkettete Automatisierungen, die auf den Ergebnissen einer vorausgegangenen Skriptausgabe basieren. Der Hauptunterschied besteht darin, dass Skriptausgabebedingungen keine Werte addieren oder für eine spätere Analyse abspeichern sondern nur auf ein einziges Skriptergebnis reagieren können.
Zählung fehlgeschlagener Anmeldungen und Benachrichtigung
Die in NinjaOne verfügbare Bedingung ‚Windows-Ereignis-ID‘ ermöglicht es Ihnen, einen Benachrichtigung auszulösen, ein Ticket zu erstellen oder ein Skript auszuführen, sobald eine bestimmte Ereignis-ID erkannt wird. Dies ist äußerst nützlich, um Ereignisse wie die Erstellung eines Administratorenkontos, Änderungen an der Windows-Firewall oder einen Fehler beim Windows-Server-Backup zu erkennen, indem einzelne Ereignisse als auslösende Bedingung nutzbar gemacht werden.
Wenn wir eine große Anzahl von Ereignissen für eine Warnung benötigen, um Maßnahmen ergreifen zu können, brauchen wir benutzerdefinierte Felder. Eine einzelne fehlgeschlagene Anmeldung ist zum Beispiel kaum zu beanstanden. Zehn fehlgeschlagene Anmeldeversuche in der letzten Stunde könnten dagegen ein Zeichen dafür sein, dass etwas nicht stimmt. Erstellen wir also eine Automatisierung, die die fehlgeschlagenen Anmeldungen der letzten Stunde zählt und Alarm schlägt, sobald der Schwellenwert von 10 fehlgeschlagenen Anmeldungen überschritten wird.
Konfiguration des benutzerdefinierten Feldes
Wir beginnen mit der Erstellung eines benutzerdefinierten Feldes, um fehlgeschlagene Anmeldeversuche abzuspeichern. Für diese Übung erstellen wir ein globales benutzerdefiniertes Feld, da wir fehlgeschlagene Anmeldungen über alle Gerätetypen hinweg erkennen möchten.
- Feld-Bezeichnung: Failed Login Attempts
- Feldname: failedLoginAttempts
- Feldtyp: Ganze Zahl
- Skripte: Lesen / Schreiben
Wir werden ein zweites benutzerdefiniertes Feld konfigurieren, um die Sicherheits-ID des letzten Anmeldeversuchs zu erhalten.
- Feld-Bezeichnung: Failed Account Login User Name
- Feldname: failedAccountLoginUserName
- Feldtyp: Text
- Skripte: Lesen / Schreiben
Schreiben Sie das Monitoring-Skript
Als Nächstes werden wir ein Skript schreiben, das fehlgeschlagene Anmeldungen erkennt. Dies ist recht einfach zu bewerkstelligen – wir werden einfach das Ereignisprotokoll abfragen und die Anzahl der fehlgeschlagenen Anmeldeversuche zählen. Anschließend wird der zurückgegebene Wert in das Feld failedLoginAttempts geschrieben. Wir geben auch den Benutzernamen in das Feld failedAccountLoginUserName zurück.
$failedLogins = ((Get-EventLog -LogName Security -After (Get-Date).AddDays(-7) -InstanceID 4625) | Select @{Name="UserName";Expression={$_.ReplacementStrings[5]}} | Group-Object -Propert UserName).count $Login = ((Get-EventLog -LogName Security -After (Get-Date).AddDays(-7) -InstanceID 4625) | Select @{Name="UserName";Expression={$_.ReplacementStrings[5]}} | Group-Object -Propert UserName).name Ninja-Property-Set failedLoginAttempts $failedLogins Ninja-Property-Set failedAccountLoginUserName $Login
Das Hinzufügen dieses Skripts zu NinjaOne ist leicht und unproblematisch.
- Navigieren Sie zu ‚Konfiguration‘ -> ‚Scripting‘
- Klicken Sie auf ‚Neues Skript hinzufügen‘
- Kopieren Sie den obigen Code in die IDE
- Wenn Ihr benutzerdefiniertes Feld nicht ‚failedLoginAttempts‘ heißt, aktualisieren Sie den Feldnamen neben Ninja-Property-Set
- Setzen Sie die Parameter des Skripts auf
- Name: Count Failed Login Attempts
- Sprache: PowerShell
- Betriebssystem: Windows
- Architektur: Alle
- Speichern Sie das Skript
Als Nächstes müssen wir dieses Skript so einrichten, dass es in regelmäßigen Abständen ausgeführt wird.
- Navigieren Sie in der Richtlinie Ihrer Wahl zu ‚Geplante Skripte‘ und klicken Sie auf ‚Ein geplantes Skript hinzufügen‘
- Klicken Sie auf ‚Skript hinzufügen‘ und wählen Sie das Skript ‚Count Failed Login Attempts‘
- Geben Sie dem Skript einen Namen und eine Beschreibung
- Stellen Sie den Zeitplan so ein, dass es jede Stunde ausgeführt wird
Schreiben Sie das Antwortskript, mit den entsprechenden Maßnahmen
Wenn wir eine hohe Anzahl von fehlgeschlagenen Anmeldeversuchen feststellen können, sollten wir dieses Problem beheben, indem wir das Konto vorübergehend sperren. Wir ziehen den Benutzernamen aus dem Feld failedAccountLoginUserName und deaktivieren den Zugriff dieses Benutzers mit Powershell.
$User = Ninja-Property-Get failedAccountLoginUserName Disable-LocalUser -Name $User
Konfigurieren Sie die Bedingung
- Navigieren Sie in der Richtlinie Ihrer Wahl zu ‚Bedingungen‘ und klicken Sie auf ‚Eine Bedingung hinzufügen‘
- Wählen Sie als Bedingungstyp ‚Benutzerdefinierte Felder‘ aus
- Wählen Sie unter ‚Benutzerdefinierter Feldwert muss beliebige Bedingungen erfüllen‘ die Option ‚Hinzufügen‘ und wählen Sie für ‚Failed Login Attempts‘ als Operator ‚größer als oder gleich‘ mit einem Wert von ’10‘.
- Klicken Sie auf ‚Anwenden‘
- Wir geben der Bedingung den Namen ‚High Failed Login Attempts‘
- Legen Sie den Schweregrad, die Priorität und die Intervalle zum Zurücksetzen fest
- Legen Sie fest, ob Benachrichtigungen und Tickets erstellt werden sollen
- Klicken Sie auf ‚Hinzufügen‘
- Wenn wir die Deaktivierung des lokalen Benutzerkontos automatisieren möchten, können wir das Skript ‚Disable Local User‚ als Automatisierung zu dieser Bedingung hinzufügen
In Kürze wird auch der zweite Teil dieser Serie auf Deutsch zur Verfügung stehen. Die Übersetzung zur hier verlinkten englischen Version finden Sie dann über das Sprachmenü unserer Internetseite:
https://www.ninjaone.com/de/blog/self-service-tools-fuer-endbenutzer-mit-ninjaone/