Ich kippe mal wieder eine Information bzw. Frage in die Runde. Im administrativen Bereich kann man das PowerShell cmdlet Restart-Computer ja einsetzen, um seine Maschinen gezielt neu zu starten. Blog-Leser Markus K., der eine große Flotte an Maschinen in einer universitären Umgebung verwaltet, hat sich gemeldet und über Probleme durch temporär einfrierende Windows-System berichtet.
Anzeige
PowerShell cmdlet Restart-Computer
Das PowerShell cmdlet Restart-Computer wird von Microsoft auf dieser Webseite bereitgestellt. Das Cmdlet ermöglicht Administratoren Windows-Betriebssysteme lokal oder remote neu zu starten und bietet dafür eine Reihe Optionen an. Dazu heißt es:
Sie können die Parameter von Restart-Computer verwenden, um die Neustartvorgänge auszuführen, die Authentifizierungsebenen und alternative Anmeldeinformationen anzugeben, die gleichzeitig ausgeführten Vorgänge zu begrenzen und einen sofortigen Neustart zu erzwingen.
Ab Windows PowerShell 3.0 können Sie warten, bis der Neustart abgeschlossen ist, bevor Sie den nächsten Befehl ausführen. Geben Sie ein Wartezeitlimit und ein Abfrageintervall an, und warten Sie, bis bestimmte Dienste auf dem neu gestarteten Computer verfügbar sind. Dieses Feature macht es praktisch, Restart-Computer in Skripts und Funktionen zu verwenden.
So weit, so gut. Die PowerShell wird auch immer wieder zyklisch aktualisiert – aber solange das cmdlet läuft, interessiert das niemanden.
Es gibt Freezes
Blog-Leser Markus K. hat mich gerade per Mail kontaktiert, und mir eine eher unschöne Beobachtung im Zusammenhang mit dem PowerShell cmdlet Restart-Computer mitgeteilt. Ich stelle seine Hinweise mal zur Information hier ein:
PowerShell cmdlet fun
wir haben festgestellt, dass das cmdlet Restart-Computer PowerShell freezes verursacht.
Ob das nur in AD Umgebungen auftritt, oder auch so, kann ich nicht sagen.
Spannend ist, dass es ein paar mal gut geht und dann bis zu 25 Minuten hängen bleibt und dann geht es weiter bis es wieder einen Freeze gibt.
Das Skript restartet laufende PCs und weckt ausgeschaltete Systeme. Bei den Restarts kommt es zu diesem Effekt.
Konnte das auch manuell nach 3-4 Restarts die schnell nacheinander gemacht werden beobachten.
Bei ~600 Rechnern macht das einen knackigen Unterschied, wie man sich denken kann! Fällt auch nicht so wirklich auf, da das ganze ja sauber durchläuft und erst bei näherer Betrachtung des Logs zu Tage rückt.
Markus K. schrieb mir, dass er inzwischen shutdown.exe als Lösung verwendet. Er hat im Internet gesucht und zwar ein paar Kapriolen zum Thema entdeckt, meint aber, dass es noch nicht so richtig hochgekocht wäre. Mir geht nur durch den Kopf, dass es die Tage ein Update der PowerShell gab.
Anzeige
Die Frage von Markus K.: Sind wir mal wieder die Einzigen? Gibt es jemanden von euch, dem so etwas aufgefallen ist?
Einige Nachträge
Ich hatte Markus K. gefragt, ob es am PowerShell 7.x-Update liegen könnte. Seine Antwort per Mail:
Nein ist die 0815 onboard Version:
Name Value
—- —–
PSVersion 5.1.17763.2931
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
BuildVersion 10.0.17763.2931
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1Ist mir schon früher aufgefallen, habe mir nur nichts dabei gedacht.
Im Logfile sind die Hänger schön zu sehen, paar Minuten bis zu 25 Minuten.
Sehr seltsame Sache wieder mal :).
Nach der Kommentarlage hier im Blog sieht es so aus, dass Markus K. bisher der Einzige ist, der das Phänomen zu haben scheint, oder dem das überhaupt aufgefallen ist.
Allerdings gibt es ja noch die Landschaft "hinter dem Blogger-Zaun". Ich poste ausgesuchte Blog-Beiträge auch in diversen Facebook-Gruppen. In der Gruppe von Dr. Windows habe ich folgende Rückmeldung erhalten:
hatte ich tatsaechlich gestern bemerkt (shutdown ueber ps und rechner eingefroren)
also scheint nicht nur restart sondern auch shutdown betroffen zu sein – hatte gestern abend nur keine lust/zeit mich damit noch auseinanderzusetzen.
Muss man jetzt nicht auf die Goldwaage legen, könnte auch ein falscher Fehler oder Einzelfall gewesen sein. Aber ein Trigger ist es auf jeden Fall, da ein Auge drauf zu halten.
Anzeige
"Restart-Computer" nutzen wir hier auch täglich. Aber noch keine Probleme aufgetreten.
Wir haben hier ausschließlich Windows 10 1909 und 21H2, sowie Windows 11 21H2 jeweils in der Enterprise Version.
wir verwenden die onboard PS v5 und haben derzeit noch 20H2 clients, bald 21H2 aber da sollte eigentlich kein Unterschied sein.
Skript rennt bei uns für ~600 Rechner in 30 Minuten mit shutdown.exe durch, mit restart-computer sind es 2 Stunden, also 1,5 Stunden machen die Hänger aus, was schonkrass ist.
Es gab früher(tm) immer mal wieder Probleme mit toten Links.
Also gemouteten Shares, die es nicht mehr/noch nicht (wieder) gibt. Könnte ja auftreten, wenn man nicht wirklich alle Rechner erst komplett hochlaufen läßt.
Das kann schon dann mal dauern…
Aber wer weiß schon was Windows macht?
Was sagen die Eventlogs der Rechner?
Manchmal steht da ja etwas interessantes drin.
Neugestartet werden ja auch nur PCs die bereits online sind, somit geht die annahme leider ins leere.
Für was müsst ihr denn eigentlich täglich Computer neu starten?
Also bei uns ist es eine ältere Anwendung in der Produktion, die etwas buggy ist. Um Probleme zu vermeiden, starten wir die Rechner in der Produktion automatisiert 1x pro Woche sonntags neu. Parallel werden da noch ein paar andere Dinge erledigt (ein paar cleaning tasks etc.).
Aber da gibt es sicher auch vielfältige andere Gründe.
Sehr einfach, weil sie nach dem Neustart / Aufwachen einen Task abarbeiten sollen.
Wenn ihr ~600 Rechner betreut, dann wisst ihr sicher genau was ihr macht. Aber dennoch ist mal interessant, ob ihr auch schon die Option "-Force" verwendet habt?
wir haben insgesamt mehr als 7000.
Naturlich mit -Force.
Das irre ist ja, wenn man das cmdlet durch shutdown.exe ersetzt ist alls 1A.
Also bleibt dir Frage warum Restart-Computer "picken" bleibt.
Ich finde es wenig professionell, nur weil bei einer Umgebung angeblich ein CMDlet nicht richtig funktioniert das als panglobales Problem auszurufen. Offensichtlich wurde ja nicht mal untersucht, warum was den Freeze auslöst oder was überhaupt darunter zu verstehen ist. Wenn der Rechner nicht runterfährt, kann da auch einfach daran liegen, dass ein Prozess ein Veto eingelegt hat, ein Dienst lange braucht um sich zu beenden usw. Das sollte man sich vielleicht anschauen, bevor man hier irgendwelche halbgaren Meldungen publik macht. Das ist IMHO wenig professionell.
Dir scheint das Fragezeichen im Titel nicht aufgefallen zu sein. Markus K. hat das Thema sicherlich untersucht – aber der Beitrag geht mit der Frage in die Runde "hat noch jemand das Phänomen".
Wenn Du meinst, es ist unprofessional, was hält dich davon ab, den Beitrag/das Thema oder den Blog zu ignorieren, statt hier herum zu nölen?
Aktuell sieht es so aus, dass es a) ein spezielles Problem auf den Systemen von Markus K. sein könnte (warum auch immer, in den Kommentaren gibt es ja Hinweise), oder b) der Zustand nur so selten zutrifft, dass er kaum bemerkt wird. Ziel das Beitrags war, schnell herauszufinden, ob es mehr Leute gibt, die das Phänomen kennen – oder ob es Einzelfall ist. Spart dem betroffenen Admin u.U. schlicht Zeit.
Nur kommen wir diesbezüglich mit deinem Kommentar keinen Deut weiter – IMHO. Daher habe ich den Einwurf auch nicht verstanden. Nix für ungut.
PS: Und die Beteiligten hier kenne ich lange genug aus Themen und Meldungen um einschätzen zu können, ob das irgend ein Privat-Nutzer oder ein Admin einer Kleinstfirma ist. Ich erinnere nur an das von Markus K. aufgeworfene Defender-Problem, was auch keiner kannte, irgendwann dann aber von Markus K. aufgelöst werden konnte.
Ich verwende für unsere Firmenumgebung seit Jahren psshutdown von Sysinternals. Klein, fein und funktioniert bisher tadellos.
Prinzipiell spricht ja nichts gegen tools. Bei uns wird allerdings gerne alles mit der PS abgearbeitet, weil überall verfügbar, onboard und funktioniert ja auch normal spitze.
Deswegen sehen wir eigentlich keinen Grund warum man sich zusätzliche tools brauchen sollte.
Zumal wir selbstgeschriebenen Code ja auch selber anpassen und erweitern können.
Ich habe schon früher (PS2 und PS3) festgestellt, dass Restart-Computer (nachvollziehbare) Probleme macht, wenn ich das Skript (incl. Befehl) über den Taskmanager aufrufe (Restart wird einfach nicht durchgeführt). Ersetze ich das CMDLet durch Shutdown.exe ist alles OK. Das Problem trat nicht bei allen PCs/Servern auf, aber bei vielen. Deshalb nutze ich/wir seit langem kein Restart-Computer mehr, sondern immer die EXE.
Ja wird bei uns auch via Task ausgeführt.
Ich vermute irgend ein Problem beim Aufruf der WMI classe welche das cmdlet verwendet.
Was macht "Restart-Computer" denn anders als "shutdown"?
(Von den Parametern her ja eine Menge…)
Wo genau hängt der Rechner denn?
Wann genau hat das noch nachweislich funktioniert?
Seit wann nicht mehr?
Was wurden zwischendurch geändert? :-)
Wie tot ist die Maschine überhaupt?
Geht das Netzwerk schon wieder?
Welche Dienste sind schon hoch?
Was sagt das boot log?
(Der Rechner scheint ja in seinen Treibertiefen auf irgendwas zu warten ehe er sich bequemt weiterzumachen, oder? Oder hilft bei dem "freeze" nur noch der (remote)-Netzschalter von Adidas/Nike?
"Spannend ist, dass es ein paar mal gut geht und dann bis zu 25 Minuten hängen bleibt und dann geht es weiter bis es wieder einen Freeze gibt."
Was ist "es"?
Das script das den restart auslöst?
Der gefreezte Rechner?
Ganz am Rande:
Die laufen alle unter derselben Sprache?
Die zwei Sachen arbeitung grundlegend anders.
Kein Rechner hängt ist tot oder sonst irgendwie komisch.
Die Rechner laufen und sollen neu gestartet werden, weswegen man ja auch Restart-Computer verwendet, weil es genau dafür gemacht wurde.
Dass dass cmdlet (es) mehrfach Pause macht ist halt schon etwas seltsam.
Was die OS Sprache mit einem restart zu tun hat erschließt sich mir nicht.
Also ich betrachte nicht die Phase vor dem Script. Klar muß der Rechner laufen, wenn es das Restart aus führen soll :-)
Die Rechner werden "remote" restartet.
Im scheduler liegt ein Script, das bei jedem Kaltstart ausgeführt wird.
In deinem Logfile sieht Du, das die Rechner eine zeitlang keine Vollzugsmeldungen geben und das ganze zulange dauert.
Also mal kurz geguckt:
shutdown will port 445 oder 139 connecten
restart-computer will über port 135,
Macht noch NBNS, um den Namen auszubekommen, obwohl da ne IP stand…
Das sind offenbar 2 Paar Schuhe.
Wir verwenden Restart-Computer ebenfalls über ein Script, das per Schedule Task aufgerufen wird. Und dabei kommt es alle paar Monate mal vor, dass das Script einfach stehen bleibt. Im Eventlog ist nichts zu sehen. Der nächste Task, der das Script verwendet läuft, dann auch wieder normal.
Das Script läuft auf einem Server 2016 unter PowerShell v5. Aufruf sieht bei uns so aus:
Restart-Computer -ComputerName $DeviceName -Force -Wait -For PowerShell -Timeout $RestartTimeout -ErrorAction SilentlyContinue
Es kann sein, dass er nach dem zweiten Rechner sich aufhängt oder erst nach dem 50zigsten. Wir werden das jetzt auch mal umbauen auf die shutdown.exe, weil wir einfach keinen Fehler finden können. Wir hatten das Fehlverhalten auch schon auf verschiedenen Servern.