none
Windows 2008 Server restart mit powershell script - nix passiert RRS feed

  • Frage

  • Hi,

    ich versuche momentan (erfolglos) per Powershell-Script einen geplanten Neustart eines 2008 R2 Servers zu machen,auf dem auch Exchange läuft.

    Dazu hab ich erstmal in einer Test-VM folgendes aufgesetzt:

    Script restart1.ps1:

    restart-computer -force

    Taskplaner "Aktion"

    Programm/Script: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

    Argumente: -executionpolicy unrestricted -command "C:\Users\Administrator.SERVER\Documents\restart.ps1"

    Starten in: C:\Users\Administrator.SERVER\Documents

    Unter Allgemein habe ich "Unabhängig von der Benutzeranmeldung ausführen" und "Mit höchsten Privilegien ausführen " angehakt

    Der Task wird laut Verlauf wie geplant ausgeführt ("Aktion ...powershell.exe mit Rückgabecode 0 ausgeführt"), es passiert aber nichts (kein Neustart).

    Meine Suche per Google hat mich über mittlerweile >10 Webseiten und Blog-Beträge geführt, aber nix hat funktioniert.

    Bin für jeden Hinweis dankbar.

    Thomas

    Dienstag, 2. Februar 2016 09:57

Antworten

  • mal ganz simpel:

    "Script START" | Out-File C:\Temp\Test.log -Append
    $ErrorActionPreference = "stop"
    trap {
    		"Exception aufgetreten"
    		$invocationInfo = $_.InvocationInfo.PositionMessage
    		if ($_.InvocationInfo -ne $null) {
    			"Exception in Zeile: $invocationInfo" | Out-File C:\Temp\Test.log -Append
    		}
    	}
    Restart-Computer -Force
    "Script END" | Out-File C:\Temp\Test.log -Append

    somit, würdest du mal sehen ob das Skript überhaupt ausgeführt wird + die Fehlermeldung (falls das Skript ausgeführt wird)

    Lg


    • Bearbeitet Schlieng Dienstag, 2. Februar 2016 11:32
    • Als Antwort markiert T.Braun Dienstag, 2. Februar 2016 12:39
    Dienstag, 2. Februar 2016 11:26

Alle Antworten

  • Hallo,

    ohne Error Handling, wird dein Skript immer Return Code 0 zurückgeben!

    Ändere mal deine Argumente auf:

    -executionpolicy unrestricted -file "C:\Users\Administrator.SERVER\Documents\restart.ps1"

    Wenn du in dein Skript ein Logging einbaust, würdest zu zumindest sehen ob das Skript überhaupt ausgeführt wird!

    Lg


    • Bearbeitet Schlieng Dienstag, 2. Februar 2016 10:11
    Dienstag, 2. Februar 2016 10:11
  • Die Änderung von command auf "file" bringt keine Änderung.

    Laut sysinternals procmon wird powershell.exe gestartet und hat auch mehrfach lesenden Zugriff auf das script file...

    Was wäre die einfachste Form ein Logging einzubauen?

    Gibt es eine einstellung mit der die powershell generell ins ereignisprotokoll schreibt? Dort gibt es zwar eine Sektion Powershell, da steht aber nur irrelevantes Zeugs drin.


    • Bearbeitet T.Braun Dienstag, 2. Februar 2016 10:41
    Dienstag, 2. Februar 2016 10:40
  • mal ganz simpel:

    "Script START" | Out-File C:\Temp\Test.log -Append
    $ErrorActionPreference = "stop"
    trap {
    		"Exception aufgetreten"
    		$invocationInfo = $_.InvocationInfo.PositionMessage
    		if ($_.InvocationInfo -ne $null) {
    			"Exception in Zeile: $invocationInfo" | Out-File C:\Temp\Test.log -Append
    		}
    	}
    Restart-Computer -Force
    "Script END" | Out-File C:\Temp\Test.log -Append

    somit, würdest du mal sehen ob das Skript überhaupt ausgeführt wird + die Fehlermeldung (falls das Skript ausgeführt wird)

    Lg


    • Bearbeitet Schlieng Dienstag, 2. Februar 2016 11:32
    • Als Antwort markiert T.Braun Dienstag, 2. Februar 2016 12:39
    Dienstag, 2. Februar 2016 11:26
  • Cool, danke - nach dem Hinzufügen des Logging-Codes hat es auf magische Weise plötzlich funktioniert... irgendwie hab ich sonst nix verändert.

    Grüße

    Thomas

    Dienstag, 2. Februar 2016 12:41