none
Restart-Computer alternative zum Parameter -Wait RRS feed

  • Frage

  • Hallo Zusammen

    Ich schreibe gerade an einem Script welches mir einen gewissen Dienst beendet und dann den ganzen Server neustartet.
    Nach dem Server neustart wird der Dienst wieder gestartet.

    Jetzt suche ich eine alternative für den Parameter -Wait, weil der erst mit Powershell 3.0 eingeführt wurde und meine Firma immer noch Powershell 2.0 verwendet.

    Falls mir irgendwer weiterhelfen könnte wäre ich sehr fro darüber

    P.S: Hier noch das bisherige Script

    #Hier wird der Server und die PSSession festgelegt
    $Server = "srv00985"
    $s = new-pssession -computername $Server
    
    #hier wird ein Ping zum Zielserver gesendet
    $ping = Test-Connection -ComputerName $Server -Count 1 -ea SilentlyContinue -Quiet
    
    #PSSession wird betreten
    invoke-command -session $s {
        $Server = "srv00985"
        #Service wird auf Server gesucht
        $Service = Get-Service "Print Spooler"
        "Der Service" + $Service.displayname + "hat den folgenden Status:" + $Service.Status
        #Service wird gestopt
        $Service.Stop()
        $Servicestopped = Get-Service "print spooler"
        "Der Service" + $Service.displayname + "hat den folgenden Status:" + $Servicestopped.Status
        #Server wird neugestartet 
        Restart-Computer -ComputerName $Server -Confirm -WhatIf -Wait
        #Wenn der Server online ist wird Service gestartet 
        if($ping = "True"){$Service.Start()}
        else{"Der Server" + $Server + "ist noch nicht aufgestartet"}
        $Servicestarted = Get-Service "print spooler"
        "Der Service" + $Service.displayname + "hat den folgenden Status:" + $Servicestarted.Status
        
    }

    Gruss Dominique

    Dominique Hofmann

    Mittwoch, 26. März 2014 13:05

Antworten

  • Hallo,

    du hast das Script aber auch noch nicht mit Powershell 3.0 oder 4.0 getestet? Auch mit 3.0 und 4.0 wuerde dein Script nicht funktionieren, du fuehrst den restart-computer ja duch invoke-command lokal auf dem System aus, das du starten willst, und dann funktioniert der Parameter wait logischer weise nicht, denn auf was soll der warten, durch das Neustarten kann er auf nichts warten, weil es den Process durch den Neustart nicht mehr gibt.

    Du musst alos bei get-service und restart-computer mit dem Parameter -computernamen arbeiten, um remote den Zielserver starten.

    Und den Parameter -wait kannst Du z.B: ueber zwei Do Until Schleifen nachbauen

    - restart-computer -computername ServerA
    - jetzt eine Do Until Schleife die solange laeuft, wie sich das System nach Start des Restarts noch pingbar ist
    - beim herunerfahren wird irgendwann das Netzwerk getrennt
    - quasi also der Zeitraum des herunterfahrens
    - dann gehts in die zweite Do Until Schleife, die so lange laeuft bis das System wieder pingbar ist

    natuerlich koennte man anstelle dem Ping (Test-Connection) auch auf verfuegbarkeit von WMI, RDP oder so pruefen, das Pruefen dann z.B.: alle 3 Sekunden oder so und ev. auch noch eine Zeistspanne einbauen, also wenn eine der 2 Schleifen laenger wie X Minuten laeuft eine Fehlermeldung ausgeben, es keonnte ja sein, dass das System nicht sauber runter faehrt oder nicht  mehr hochkommt ...

    Beste Gruesse
    brima


    • Bearbeitet brima Mittwoch, 26. März 2014 21:03
    • Als Antwort markiert coolmanii Montag, 31. März 2014 07:02
    Mittwoch, 26. März 2014 16:15