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.
Als erstes sollte die Zeit erfasst werden. Dazu ziehen Sie das Kommando Get date/time per Drag&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).
Zeiterfassen
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&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.
Nun werden die Dienste des Clients ausgelesen. Dazu verwenden Sie das Kommando WMI Query welches Sie per Drag&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.
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.
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.
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.
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.
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.
Zuletzt bearbeitet am 31.10.2019