Lade...
 

OSKillClients

ClassiX-Instanzen beenden

Da es nach dem Austausch von Modulen und/oder Datenbank beim Kunden zu einem inkonsistenten Zustand kommen kann, wenn ClassiX-Instanzen nach dem Austausch mit altem Code-Stand weiterlaufen, gibt es das oskillclients-Script, um alle mit einer Datenbank verbundenen ClassiX-Instanzen zu beenden.

Download: oskillclients.ps1 (Alternativ in Perforce unter //depot/maintenance/main/oskillclients.ps1)

Voraussetzung

Das Script benötigt folgende Berechtigungen:

  • Dienste auf dem lokalen Rechner starten, falls die benötigten Dienste nicht laufen (lokaler Administrator)
    • Konkret handelt es sich um die Dienste. RemoveRegistry & RpcLocator
  • Dienste auf den Clientrechnern starten, falls nicht gestartet (lokaler Administrator auf diesem Rechner)
    • Konkret handelt es sich um den Dienst: Winmgmt (Windows Management Instrumentation Service)
  • Prozesse auf den Clientrechnern beenden. (lokaler Administrator auf diesem Rechner)

Sollten nicht alle Rechner einen gemeinsamen Administrator-Account haben, dann muss das Script meist über das Domänenadministrator-Konto gestartet werden.

Sollte der angemeldete Benutzer nicht gleich dem Account sein, unter dem man das Script ausführen will, dann kann dazu mit folgendem Powershell-Befehl eine Powershell unter dem Zielaccount gestartet werden (Bsp: Classix\Administrator): Start-Process powershell.exe -Credential "classix\Administrator"
Es öffnet sich ein Fenster, welches nach dem Passwort fragt und anschließend öffnet sich die neue Powershell unter dem angegebenen Account. Die Powershell, mit der die neue Shell geöffet wurde, sollte anschließend geschlossen werden, da sich die Eingabe merwürdig auf die beiden Shells aufteilt.

Ab Windows Vista blockiert die Windows-Firewall standardmäßig eingehenden Verkehr für den Windows Management Instrumentation Service. Die Windows-Firewall hat hierfür bereits Regeln eingerichtet, die standardmäßig einfach nur deaktiviert sind. Der folgende Screenshot zeigt die Regeln, die aktiviert werden müssen.

 

Oskillclientssetup3

 

Verwendung

Aufrufsyntax
oskillclients.ps1 [-Database] <Datenbank|Server> [-OutDir <Verzeichnis>] [-TimeLimit <Zeit in s>] [-ConfigFile <scriptPfad>]

 

Der erste Parameter steuert, welche Clients beendet werden sollen und kann folgende Formen haben:

  • hostname - Alle Clients, die mit irgendeiner Datenbank auf dem Server hostname verbunden sind, werden beendet
  • hostname:DB-Pfad - Alle Clients die mit der Datenbank unter DB-Pfad auf dem Server hostname verbunden sind, werden beendet
  • DB-Pfad - Äquivalent zu localhost:DB-Pfad

Ist OutDir gesetzt, dann schreibt der Prozess zusätzlich zu der Konsolenausgabe noch eine Log-Datei. Da geplante Aufgaben unter anderen Benutzern als Hintergrundprozess ablaufen und keine Oberfläche anzeigen, sollte in OutDir gesetzt sein, um über die Log-Datei zu erfahren, ob das Script erfolgreich war, oder nicht. Existiert das Verzeichnis nicht, dann wird es erzeugt.

Mit TimeLimit kann die maximale Wartezeit (in Sekunden) überschrieben werden, die der Hauptprozess wartet, bis die Hintergrund-Prozesse alle Clients beendet haben. Je nach Netzwerk, Clientanzahl, Geschwindigkeit der Rechner und Konfiguration sind andere Werte sinnvoll. Default: 60 Sekunden.

Über ConfigFile kann der Pfad zu einer Script-Datei (.ps1) angegeben werden, die beim Start geladen wird (falls vorhanden). Dadurch können die übergebenen Argumente in dem Script nachträglich angepasst/gesetzt/geändert werden, ohne den Aufruf selbst anpassen zu müssen. Dies kann hilfreich sein, falls das Script als geplante Aufgabe von einem Benutzer mit mehr Berechtigungen ausgeführt wird, dessen Passwort nicht bekannt ist. Da für das Anpassen der Aufgabe und damit der Startparameter das Passwort notwendig ist, können über das Script die Startparameter einfacher angepasst werden.

Einrichtung als Aufgabe

Sollte ClassiX beim Kunden keine Domänenadministratorrechte haben, dann kann das Script noch über eine geplante Aufgabe gestartet werden, die der Administrator für ClassiX anlegt.

Beim Einrichten der Aufgabe muss darauf geachtet werden, einzustellen, dass die Aufgabe unter einem anderen Benutzer ausgeführt wird (nämlich dem Domänenadministrator)

 

Oskillclientssetup1

 

Als Aktion muss das Programm powershell.exe gewählt werden. Als Argumente muss zuerst der Pfad zum Script und anschließend die eigentlichen Script-Argumente angegeben werden. Da geplante Aufgaben, die unter einem anderen Benutzer ablaufen, keine Oberfläche zeigen, ist es hierbei empfehlenswert den Parameter OutDir zu setzten, um etwas Feedback über die Log-Dateien zu erhalten. 

 

Oskillclientssetup2

 

Alternativ kann auch nur der Parmeter ConfigFile gesetzt werden, um über das Config-Script die  Startparameter flexibel anzupassen, ohne dass der Domänenadministrator die Aufgabe anpassen muss.