Client Commands neu hinzufügen
Um ein neues Client Command zu erstellen, wählen Sie den Ordner aus, in welchem das Client Command gespeichert werden soll. Anschließend klicken Sie auf Neues Client Command in der Schnellwahlleiste. Es wird der Client Command Editor geöffnet, über welchen Sie das neue Client Command entwerfen können. Weitere Informationen zum Client Command Editor finden Sie im Kapitel Client Command Editor.
Im Folgenden wird nun die Erstellung und Konfiguration eines Client Command anhand des bereits bestehenden Client Command Dienste auslesen erläutert. Das fertige Client Command soll dazu gedacht sein, auf einem Client dessen Dienste auszulesen und zu speichern, um Sie später über eine Abfrage aufrufen zu können.
Nachdem Sie auf Neues Client Command geklickt haben, sehen Sie die Standardoberfläche des Client Command Editor und es kann sofort begonnen werden, das Client Command zu erstellen. Generell empfiehlt es sich, zunächst die Eigenschaften des neuen Client Command (siehe Eigenschaften) zu konfigurieren. Im Fall des Client Command Dienste auslesen müssen hier jedoch keine weiteren Einstellungen vorgenommen werden.
Consolenskript konfigurieren
Um auf einem Client die Dienste auszulesen, ist ein Consolen-Skript eigentlich nicht erforderlich. Jedoch kann in diesem Fall z.B. ein Dialog für denjenigen angezeigt werden, welcher das Client Command aus einer Console heraus ausführt. Somit würde die ausführende Person nochmals angezeigt bekommen, was das Client Command für eine Aufgabe besitzt und wie diese ausgeführt wird. Über solch einen Dialog könnte ein evtl. falsch gewähltes Client Command auch noch abgebrochen werden.
Um diesen Dialog aufzurufen, ziehen Sie das Kommando Dialogs aus der linksseitigen Commandlist in den Skriptbereich. Es öffnet sich ein Fenster, über welches der Dialog nun konfiguriert wird (siehe Kategorie Dialogs).
Geben Sie unter dem Tab Allgemein als Beschreibung der Aktion den Text Information ein. Weitere Angaben sind hier nicht notwendig. Wechseln Sie nun zum Tab Nachrichteneinstellungen. Geben Sie hier den Titel Dienste auslesen und eine passende Nachricht ein. Folgende Nachricht ist im vorhandenen Client Command eingegeben worden:
Es wird jetzt der Name, der Status und der Starttyp der installierten Dienste auf den markierten Rechnern ausgelesen und in deren Client Details als individuelle Felder abgelegt. (Client Details > Software > Computer > Individual Fields).
Was es dabei mit den Individuellen Feldern auf sich hat, erfahren Sie später bei der Zusammenstellung des Clientskript bzw. im Kapitel zu den individuellen Feldern.
Da der Benutzer des Client Command über den hier zu konfigurierenden Dialog eine Information erhalten soll, wählen Sie Information als Nachrichtentyp. Ebenso werden auch nur die Buttons OK und Abbrechen benötigt, welche Sie über die entsprechenden Checkboxen aktivieren.
Um die Ausführung des Client Command abbrechen zu können, falls dieses nur versehentlich ausgeführt wurde, wird der Abbrechen Button auch mit dem Abbrechen des gesamten Client Command verbunden, indem ein Haken in der Abbrechen Checkbox im Bereich Abbruch auf Button(s) gesetzt wird.
Eine Variable muss nicht angegeben werden, da die weitere Ausführung des Client Command einzig und allein von den Buttons abhängt. Somit müssen auch keine An-/Eingaben verarbeitet werden.
Unter dem Tab Eingabeeinstellungen werden keine Konfigurationen vorgenommen, da keine weiteren Eingaben vom Benutzer erwartet werden, als ein Klick auf OK oder Abbrechen.
Einen Dialog hinzufügen
Unter dem Tab Erweiterte Einstellungen wird das automatische Schließen des Dialogs auf 25 Sekunden ausgelegt. Dabei wird ebenfalls das Client Command beendet, falls der Benutzer diesen Dialog innerhalb der angegebenen Zeit nicht bestätigt.
Klicken Sie auf den OK Button um die Konfiguration so zu übernehmen. Das Kommando wird nun in das Client Command integriert. Wechseln Sie nun über die seitlichen Tabs zum Clientskript.
Clientskript konfigurieren
Dieses Skript wird auf einem Client ausgeführt und muss, da das Client Command die Dienste des Client auslesen soll, die entsprechenden Kommandos enthalten. Das Konzept hierfür sieht so aus, dass das aktuelle Datum inkl. der Uhrzeit sowie der Dienstname, der Status des Dienstes und der Starttyp gespeichert werden soll. Dazu sind acht einzelne Kommandos nötig.
Allgemeine Einstellungen festlegen
Jeder Baustein, den Sie per Drag-and-Drop zu Ihrem Client Command hinzufügen können, verfügt über einen Reiter Allgemein. Auf diesem Reiter legen Sie grundlegende Einstellungen für den Baustein fest.
Beschreibung der Aktion
Hier können Sie zum einen einen Namen angeben, unter dem Sie, auch bei einem längerem Client Command, den Befehl wiederfinden können. Hier wird per Default der Name des Befehls eingetragen. Zusätzlich können Sie einen Kommentar hinterlassen, der den Befehl und die Funktionsweise näher beschreibt.
Optionen
Geben Sie zunächst an, ob der Baustein in Ihrem Client Command aktiviert sein soll oder nicht. Per default ist diese Option aktiviert.
Ausführungsoptionen
Unter den Ausführungsoptionen geben Sie an, unter welchem Kontext der Baustein ausgeführt werden soll. Sie können zwischen den folgenden Optionen wählen:
Kontext | Ausführung | Beschreibung |
Immer ausführen | Agent oder Console | Der Baustein wird immer ausgeführt |
Maschinenbezogen | Agent | Der Baustein wird nur ausgeführt, wenn dieser auf der Maschine bisher nicht ausgeführt wurde. |
Maschinenbezogen | Console | Der Baustein wird nur ausgeführt, wenn dieser auf der Maschine bisher nicht ausgeführt wurde. |
Benutzerbezogen | Agent | Der Baustein wird nur ausgeführt, wenn dieser für den Benutzer bisher nicht ausgeführt wurde. |
Benutzerbezogen | Console | Der Baustein wird nur ausgeführt, wenn dieser für den Benutzer bisher nicht ausgeführt wurde. |
Legen Sie zusätzlich fest, ob der Baustein als Dienst, als Benutzer oder als Benutzer mit höchstmöglichen Rechten ausgeführt werden soll.
Zeit erfassen
Als erstes sollte die Zeit erfasst werden. Dazu ziehen Sie das Kommando Get date/time per Drag-and-Drop aus der Commandliste in den Skript–Bereich. Im Details Tab geben Sie an, dass Sie die/das Aktuelle Zeit/Datum nutzen wollen. Als Format wählen Sie dd.mm.yyyy, hh.nn. Somit erhalten Sie z.B. das Datum 09.02.2017, 16.31, welches in einer Variablen gespeichert wird. Diese Variable geben Sie im unteren Dialogbereich an. Erstellen Sie dazu eine Variable TIME (siehe Variablen).
Zeit erfassen
Variable setzen
Als nächstes ist eine Variable zu setzen. Dies ist nötig, da die alten Daten vor dem Speichern des ersten ausgelesenen Dienstes gelöscht werden müssen, um keine doppelten oder veralteten Einträge zu besitzen. Später dürfen die neu gelesenen und eingetragenen Dienste aber nicht vom folgenden Dienst beim Speichern gelöscht werden.
Variable setzen
Um eine Variable zu setzen, wählen Sie das Kommando Set project variable und ziehen es per Drag-and-Drop in den Skript–Bereich. Erzeugen Sie über den sich öffnenden Dialog eine Variable mit dem Namen COUNT. Anschließend geben Sie als Inhalt eine 1 ein.
Dienste auslesen
Nun werden die Dienste des Clients ausgelesen. Dazu verwenden Sie das Kommando WMI Query welches Sie per Drag-and-Drop in den Skript–Bereich ziehen.
Auslesen der Dienste
Geben Sie unter dem Tab Details den Einfachen Modus an. Wählen Sie als Namespace den DropDown–Eintrag root\CIMV2. Die dazu gehörige WMI Klasse ist Win32_Service und kann manuell oder über den nebenstehenden Button eingetragen werden. Bei der Nutzung des Buttons erscheint ein Dialog mit einer Auflistung aller WMI Klassen des gewählten Namespace. Eine Angabe von Bedingungen ist nicht notwendig, da alle Daten der Dienste ausgelesen werden sollen.
Geben Sie die Variable SERVICE als Ergebnisvariable an. In dieser Variablen wird ein Dienst gespeichert, alle diesem Kommando untergeordneten Kommandos ausgeführt und der nächste Dienst ausgelesen. Unter dem Tab Entfernter Rechner müssen keine Angaben gemacht werden, da dieses Kommando lokal ausgeführt werden soll.
If-Bedingung festlegen
Um nun vor dem Speichern des ersten erfassten Dienstes die alten Daten zu löschen, wird eine Verzweigung in das Skript eingebaut. Ziehen Sie dazu das If-Kommando in das Skript und geben Sie unter dem Tab Details den Wert 1 an, indem Sie die eben angelegte Variable COUNT eintragen (%COUNT%).
Da auf Gleichheit mit 1 getestet werden soll, wird der entsprechende Operator ausgewählt und als Wert2 eine 1 eingetragen. Die Optionen sind hierbei egal, da es sich um Zahlen und nicht um Zeichenketten handelt. Anschließend ordnen Sie dieses Kommando mit Hilfe der Pfeil-Button dem Kommando WMI Query unter, ähnlich einem Unterordner im Explorer.
Then-Folge / Daten speichern
Falls die gerade definierte Bedingung zutrifft (Count=1), werden alle Kommandos ausgeführt, welche dem If–Kommando (mit Hilfe der Pfeil-Button) untergeordnet werden.
Then-Folge / Daten speichern
Um die Daten des eben ausgelesenen Dienstes zu speichern, ziehen Sie das Kommando Store Value on server (Client) in das Skript. Unter dem Tab Details stellen Sie die Option auf Mehrfachwert auf dem Server sichern. Ganz wichtig ist nun die Option Alte Werte löschen, welche Sie aktivieren. Somit werden die alten Daten der Dienste gelöscht, bevor neue Daten gespeichert werden. Ebenso ist genau diese Option der Grund für die Variable COUNT sowie die If-Else-Verzweigung. Da die Variable Count später erhöht wird, wird dieses Kommando nicht wieder ausgeführt. Dazu später mehr.
Suchen Sie nun die Felder aus dem Bereich Feld, in welchen die Daten der ausgelesenen Dienste gespeichert werden sollen. Per Doppelklick wird ein Feld im unteren Bereich eingeblendet. Hier werden nun die Felder Dienstname, Status, Starttyp und Zuletzt ausgelesen genutzt. Diese Felder wurden allerdings vorher in den Benutzerdefinierte Felder angelegt (siehe Benutzerdefinierte Felder).
Sind nun die benötigten Felder alle im unteren Bereich (Wert) vorhanden, können diesen die entsprechenden Werte zugewiesen werden. Die Werte wurden zuvor in die Variable SERVICE eingelesen, welche nun genutzt werden kann:
Dienstname Status Starttyp Zuletzt ausgelesen | %SERVICE.caption% %SERVICE.state% %SERVICE.startmode% %TIME% |
Die Eigenschaften der Variable SERVICE (caption, state, startmode) werden durch die Daten der Abfrage (Kommando WMI Query) vorgegeben. Die Variable TIME wurde bereits am Anfang des Skripts angelegt.
Else-Bedingungen festlegen
Um alle weiteren Dienste, welche ausgelesen werden, ebenfalls zu speichern benötigen Sie zunächst eine Else-Verzweigung. Ziehen Sie das entsprechende Kommando in das Skript und ordnen Sie es mit Hilfe der Pfeil-Buttons in der gleichen Spalte wie das If–Kommando an.
Then-Folge / Daten speichern
Nun werden alle Kommandos ausgeführt, welche dem Else–Kommando (mit Hilfe der Pfeil-Buttons untergeordnet werden.
Um die Daten des eben ausgelesenen Dienstes zu speichern, ziehen Sie das Kommando Store Value on server (Client) in das Skript. Unter dem Tab Details stellen Sie die Option auf Mehrfachwert auf dem Server sichern. Die Option Alte Werte löschen aktivieren Sie diesmal nicht. Somit werden die neuen Daten der Dienste gespeichert, ohne dass die alten gelöscht werden.
Suchen Sie nun die Felder aus dem Bereich Feld, in welchen die Daten der ausgelesenen Dienste gespeichert werden sollen. Per Doppelklick wird ein Feld im unteren Bereich eingeblendet. Hier werden nun die Felder Dienstname, Status, Starttyp und Zuletzt ausgelesen genutzt. Diese Felder wurden allerdings vorher in den Benutzerdefinierte Felder angelegt (siehe Benutzerdefinierte Felder). Sind nun die benötigten Felder alle im unteren Bereich (Wert) vorhanden, können diesen die entsprechenden Werte zugewiesen werden. Die Werte wurden zuvor in die Variable SERVICE eingelesen, welche nun genutzt werden kann.
Dienstname Status Starttyp Zuletzt ausgelesen | %SERVICE.caption% %SERVICE.state% %SERVICE.startmode% %TIME% |
Die Eigenschaften der Variable SERVICE (caption, state, startmode) werden durch die Daten der Abfrage (Kommando WMI Query) vorgegeben. Die Variable TIME wurde bereits am Anfang des Skripts angelegt.
Variable ändern
Damit die alten Daten nur einmal, nämlich im ersten Durchlauf, gelöscht werden, muss die Variable COUNT erhöht werden. Erst dann funktioniert der gesamte Aufbau mit dem If–Else–Konstrukt. Ziehen Sie hierzu das Kommando Increase Variable in das Skript und ordnen Sie es mit Hilfe der Pfeil-Button in der gleichen Spalte wie das If–Kommando an. Geben Sie unter dem Tab Details als Variablenname die Variable COUNT an und als Schritt 1.
Das Client Command ist nun vollständig und kann lokal getestet werden.
Skripte testen
Um nun zu testen, ob das Client Command bzw. die einzelnen Skripte ordnungsgemäß funktionieren, lassen Sie zunächst eine Syntaxüberprüfung durchlaufen. Klicken Sie dazu auf das entsprechende Icon () in der Schnellwahlleiste. Anschließend wird die Syntax des Skripts automatisch geprüft, wonach Sie per Dialog über das Ergebnis informiert werden.
Setzen Sie einen Breakpoint in der achten (letzten) Zeile. Klicken Sie dazu einfach neben die Zeilennummer. Es erscheint ein roter Punkt an dieser Stelle. Ebenso können Sie die verwendeten Variablen über einen Rechtsklick in den Variablenverlauf eintragen. Somit lassen sich die Werte der Variablen anzeigen.
Breakpoint setzen
Variable hinzufügen
Lassen Sie das Skript nun laufen, indem Sie auf das Start–Icon () klicken. Sie sehen anhand der Statusspalte im Skript, dass nur der erste Teil der If-Else–Verzweigung ausgeführt wurde, im Ablauflog die bisherigen Aktionen zu sehen sind und im Variablenlog die aktuellen Werte eingetragen sind.
Klicken Sie nochmals auf Start und Sie sehen anhand der Statusspalte des Skripts, dass dieses Mal der zweite Teil der If-Else–Verzweigung ausgeführt wurde. Ebenso lassen sich wieder die bisherigen Aktionen und Variablenzustände einsehen. Verläuft das Skript/Client Command korrekt, speichern Sie dieses über das entsprechende Icon und lassen sich evtl. eine Zusammenfassung ausgeben. Schließen Sie nun den Editor.