WinCC Unified Client-PCs über Runtime automatisch herunterfahren

KarlMeier

Level-2
Beiträge
337
Reaktionspunkte
60
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo miteinander,
ich überlege gerade wie ich folgende Aufgabe löse...

Ich habe einen PC auf welchem eine Unified-Runtime läuft. Dort habe ich eine "Runtime beenden" und "Windows herunterfahren"-Funktion eingebaut. Das funktioniert auf dem Runtime-PC auch einwandfrei.
Nun habe ich im Verbund auch 2 Client-PCs für die Runtime, welche ich auch gerne automatisiert herunterfahren würde. Leider fällt mir da bisher nichts passendes ein. Hat jemand von euch eine Idee? Meine Shutdown.bat-Datei, welche ebenfalls auf den Client-PCs auf einem Extra-Laufwerk liegt, wird auf den Clients nicht ausgeführt, nur auf dem Server-PC.

Ich hab jetzt zwei Ansätze... Der Eine wäre eine eigene USV an jedem Client-PC. Sobald die Anlage mit dem Hauptschalter stromlos gemacht wird, fahren diese von der USV-angestoßen automatisch herunter. Die Lösung gefällt mir allerdings nicht so sehr, weil die Client-PCs in einem Rittal-Gehäuse verbaut sind, wo für eine USV kein Platz ist. Die Client-PCs arbeiten mit 230V. Vielleicht könnte man das Platzproblem mit einem langen USB-Kabel lösen, dann könnte man die USV in einem kleinen, separaten Schrank platzieren.

Eine zweite Variante wäre ein Herunterfahren initiiert vom Windows-Aufgabenplaner bei einem eintretenden Ereignis. Leider fällt mir kein passendes Ereignis ein. Wenn die Runtime vom Client nicht mehr erreichbar ist, dann ist das ja für den Edge erstmal kein Fehler. Ich muss natürlich auch sicherstellen, dass die Clients nur herunterfahren, wenn auch wirklich ausgeschaltet werden soll. Es kann durchaus sein, dass der Runtime-Server mal verzögert hochfährt und die Clients schon bereit sind, aber noch auf die Runtimeverbindung warten. Dann wäre es natürlich nicht Sinn der Sache, wenn diese wieder herunterfahren.
 
Jetzt bin ich noch über eine andere Möglichkeit gestolpert und zwar über Windows Powershell einen Stop.Computer an einen Remote-PC zu senden. Angeblich wird dieser dann heruntergefahren. Werde das morgen mal ausprobieren. Hat sowas zufällig schon jemand gemacht? Den Powershell-Befehl kann ich ja einfach in die Batch-Datei mit einfügen oder muss ich da etwas extra einrichten?
 
Wieder was gelernt, vielen Dank!

Wie und wo stellt man denn die Rechte ein? In den Remote-Desktop-Rechten? Oder muss ich einen DomänenAdmin erstellen?
 
Auf der verlinkten Seite steht:

Users must be members of the Administrators group to annotate an unexpected shutdown of a local or remotely administered computer. If the target computer is joined to a domain, members of the Domain Admins group might be able to perform this procedure.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ähnliches wurde schon einmal diskutiert:

Vielleicht findest Du dabei Anregungen.
 
Vielen Dank für die Tipps, ich hab es gelöst bekommen und möchte euch den Lösungsweg natürlich nicht vorenthalten. Vielleicht stolpert ja jemand mal über das gleiche Problem. Man muss sich da leider ein wenig durch die Windows-Einstellungen kämpfen und Menüs suchen, die man nicht findet, wenn man sie nicht kennt.

Schritt 1:
Auf jedem Client-Rechner muss das Remote-Herunterfahren zugelassen werden.
- Man muss sich mit einem Administratorkonto anmelden.
- Dann drückt man "Windows-Taste + R" und schreibt dort "gpedit.msc". Es öffnet sich der Editor für lokale Gruppenrichtlinien.
- Unter Computerkonfiguration wählt man "Windows-Einstellungen"->"Sicherheitseinstellungen"->"Lokale Richtlinien"->Zuweisen von Benutzerrechten
- Doppelklick auf "Erzwingen des Herunterfahrens von einem Remotesystem aus"
- Benutzer oder Gruppe hinzufügen
- Hinzufügen des Benutzers "Jeder" -> Übernehmen -> OK
- Gleiche Vorgehensweise beim Punkt "Herunterfahren des Systems"
- Fertig!

Schritt 2:
Auf jedem Client-Rechner muss die Firewall deaktiviert werden

Schritt 3:
Auf jedem Client-Rechner muss das Netzwerkprofil von öffentlich auf privat umgestellt werden, sofern es nicht schon auf privat ist.
Bevor man lange in den Einstellungen herumsucht geht es auf diesem Wege am einfachsten.
- Man drückt wieder "Windows-Taste + R" und schreibt dort "secpol.msc". Es öffnet sich das Fenster "Lokale Sicherheitsrichtlinie"
- Man wählt "Netzwerklisten-Manager-Richtlinien"
- Doppelklick auf "Nicht identifizierte Netzwerke"
- Man setzt Standorttyp auf "Privat"
- Fertig!

Auf dem Server-PC kann man nun den Befehl eingeben:
shutdown /s /f /m \\192.168.178.100

/s - bedeutet Herunterfahren. Man könnte auch stattdessen /r schreiben, dann wird der PC nicht heruntergefahren sondern neu gestartet
/f - Alle laufenden Prozesse, welche ein Herunterfahren blockieren könnten werden gekillt
/m - bedeutet dass der Befehl Remote ausgeführt werden soll. Gefolgt von \\ und der entsprechenden IP des Client-PCs.

Die angepasste Befehlszeile kann man in eine Batch-Datei einfügen, welche über ein Skript über Unified aufgerufen wird. Wie das grundsätzlich funktioniert ist hier erklärt.


Wichtig ist noch folgendes:
Auf dem Server-PC müssen die Windows-Benutzer gleich benannt sein wie auf dem Client-PCs, sonst gibt es einen Zugriffsrechte-Fehler. Wenn der Windows-Benutzer auf dem Server-PC, welcher die Batch-Datei ausführt zB. "SimaticAdmin" heisst, dann muss es diesen gleichen Windows-Benutzer auch auf dem Client-PC geben.

Ich hoffe ich habe nichts vergessen. Möglicherweise gibt es auch eine andere/einfachere Lösung. Ich hab mich bei meiner Lösung von Problem zu Problem gehangelt und der Reihe nach alle Probleme gelöst. Jetzt funktioniert es einwandfrei.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ob das so wirklich sinnvoll ist und auch die IT damit einverstanden ist?
Berechtigte Frage… Mir war es auch nicht ganz so recht, aber ich hab es extra getestet. Wenn das nicht so geändert wird geht der shutdown nicht. Da geht dann noch nichtmal der Ping durch.

Hat jemand eine Idee wie man das anders lösen könnte?
 
Zurück
Oben