Heiße Hilfe
Ich stehe vor der Aufghabe, PCs zeitgesteuert herunterfahren zu lassen- allerdings nicht, wenn der betreffende PC gerade etwas berechnet (rendert). Anders formuliert: Der Computer soll herunterfahren, es sei denn dieser oder jener Prozeß läuft noch.
Prima! Eine passende Aufgabe, um gleich mal in die Windows PowerShell hinein zu schnuppern- dachte ich...
Das Ziel der Aktion, nämlich das Herunterfahren, wollte ich durch einen Zugriff auf die Methode Win32Shutdown der WMI-Klasse Win32_OperatingSystem lösen.
Aber Hallo:

Was ist das? Ich bin Administrator und darf meine eigene Maschine nicht herunterfahren?
Nach dem ersten Mundoffenstehenlassen hatte ich mich wieder eingekriegt und das allwissende Orakel Google befragt, und anscheinend bin ich nicht der Einzige mit diesem Problem: Im Knowledge-Base Artikel 891865 beschreibt Microsoft genau dieses Problem.
Bloß- wie komme ich an diesen Hotfix, ohne erst einen langwierigen Support-Call eröffnen zu müssen? Dafür bietet mir MS ein "Hotfix Request Web Submission Form" an- bin gespannt, ob das funktioniert...
Interessanterweise beschreibt oben genannter Knowledge-Base Artikel mein Problem unter .NET 1.1 SP 1 - da stellt sich mir doch die Frage, warum der Fehler auch unter .NET 3.0 auftritt.
Nachtrag:
Es scheint sich - obwohl es einen Artikel in der Knowledgebase gibt - doch nicht um einen Bug zu handeln: Das Problem ist, dass man wohl normalerweise keine Berechtigung hat, den Rechner neu zu starten- wie auch die Fehlermeldung sagt. Der Hotfix im kb-Artikel funktioniert mit .Net 2.0 und/oder 3.0 übrigens auch nicht.
Siehe auch diese Diskussion.
Korrekt funktioniert also der folgende Code:
Prima! Eine passende Aufgabe, um gleich mal in die Windows PowerShell hinein zu schnuppern- dachte ich...
Das Ziel der Aktion, nämlich das Herunterfahren, wollte ich durch einen Zugriff auf die Methode Win32Shutdown der WMI-Klasse Win32_OperatingSystem lösen.
Aber Hallo:

Was ist das? Ich bin Administrator und darf meine eigene Maschine nicht herunterfahren?
Nach dem ersten Mundoffenstehenlassen hatte ich mich wieder eingekriegt und das allwissende Orakel Google befragt, und anscheinend bin ich nicht der Einzige mit diesem Problem: Im Knowledge-Base Artikel 891865 beschreibt Microsoft genau dieses Problem.
Bloß- wie komme ich an diesen Hotfix, ohne erst einen langwierigen Support-Call eröffnen zu müssen? Dafür bietet mir MS ein "Hotfix Request Web Submission Form" an- bin gespannt, ob das funktioniert...
Interessanterweise beschreibt oben genannter Knowledge-Base Artikel mein Problem unter .NET 1.1 SP 1 - da stellt sich mir doch die Frage, warum der Fehler auch unter .NET 3.0 auftritt.
Nachtrag:
Es scheint sich - obwohl es einen Artikel in der Knowledgebase gibt - doch nicht um einen Bug zu handeln: Das Problem ist, dass man wohl normalerweise keine Berechtigung hat, den Rechner neu zu starten- wie auch die Fehlermeldung sagt. Der Hotfix im kb-Artikel funktioniert mit .Net 2.0 und/oder 3.0 übrigens auch nicht.
Siehe auch diese Diskussion.
Korrekt funktioniert also der folgende Code:
$os = (Get-WmiObject Win32_OperatingSystem -Com server)
$os.psbase.Scope.Options.EnablePrivileges = $true
$os.reboot()
