Studio X & G7500 – „Automatic reboot“ Powershell-Script

Derzeit bekomme ich vermehrt Anfragen nach der Möglichkeit Poly Videoendpunkte automatisch geplant neu zu starten. In diesem Post zeige ich Ihnen eine Möglichkeit dies schnell und einfach umzusetzen.

Wir erstellen im Folgenden alle notwendigen Dateien um per Powershell auf Ihre Endpunkte zu connecten und diese automatisch zu rebooten. Dieser Prozess startet auch verbundene TC8, respektive TC10, Devices neu.

Erstellung eines Ordners

Erstellen Sie auf Ihrem PC oder Server auf dem Laufwerk C:\ einen Ordner „Reboot“.
(Sie können natürlich auch einen anderen Folder oder ein anderes Laufwerk nutzen. Achten Sie aber bitte darauf, dass sich beide zu erstellenden Dateien im selben Pfad befinden).

Erstellung des Powershell Scripts

Öffnen Sie einen Text Editor (zum Beispiel Notepad), kopieren Sie den folgenden Code hinein und speichern Sie die Datei als „reboot.ps1“. Bitte achten Sie darauf, dass keine Endung wie .txt angefügt wird / respektive entfernen Sie diese.

#BEGIN POWERSHELL Automatic Reboot Script for Studio X and G7500
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

$File = get-content "IP_Pass.txt"
foreach ($line in $File){
    $Arr = $line.Split(',')
    [array]
#URL to make new session
$sessionURL = ("https://" + $Arr[0] + "/rest/session");
#Command to make new session
$sessionBody = "{`"user`": `"admin`",`"password`": `""  + $Arr[1] + "`"}"

#URL to issue reboot
$rebootURL = ("https://" + $Arr[0] + "/rest/system/reboot");
#Command to issue reboot
#$rebootBody = "{`"action`": `"reboot`"}"
#reboot all
$rebootBody = "{`"action`": `"reboot`" , `"restartAll`": `"True`"}"

# disable self signed certificate check
if (-not ([System.Management.Automation.PSTypeName]'ServerCertificateValidationCallback').Type)
{
$certCallback = @"
    using System;
    using System.Net;
    using System.Net.Security;
    using System.Security.Cryptography.X509Certificates;
    public class ServerCertificateValidationCallback
    {
        public static void Ignore()
        {
            if(ServicePointManager.ServerCertificateValidationCallback ==null)
            {
                ServicePointManager.ServerCertificateValidationCallback += 
                    delegate
                    (
                        Object obj, 
                        X509Certificate certificate, 
                        X509Chain chain, 
                        SslPolicyErrors errors
                    )
                    {
                        return true;
                    };
            }
        }
    }
"@
    Add-Type $certCallback
 }
[ServerCertificateValidationCallback]::Ignore()
# End self signed certificate commands

$date = get-date -Format yyyyMMdd-HHmmss
$log = "DEVICE IP: " + $Arr[0] + "`t DATE: " + $date
Add-Content log.txt $log

	try
	{
		Invoke-WebRequest $sessionURL -UseBasicParsing -ContentType "application/json" -Method Post -body $sessionBody -SessionVariable sess;
		Invoke-WebRequest $rebootURL -UseBasicParsing -ContentType "application/json" -Method Post -WebSession $sess -Body $rebootBody
	}
	catch
	{
		 $_.Exception.Message | Add-Content log.txt
	}


}

Erstellung der IP_Pass Datei (IPs, Zugriffspasswörter)

Erstellen Sie eine weitere Text Datei und tragen Sie die IP Adressen und Admin Passwörter für die WebUI Connection im Format „IPAdresse,Password“ ein. Speichern Sie die Datei anschließend als .txt im selben Ordner wie das Reboot Script selbst.

Script Ausführung

Öffnen Sie Powershell um die Funktion des Scripts zu testen.

Wechseln Sie mit dem Command CD zu dem Ordner, in dem sich Ihr Script befindet.

Starten Sie das Script durch Eingabe von „.\reboot.ps1“ .

Bestätigen Sie die Ausführung durch Eingabe von „M“ und anschließenden Druck auf die Enter Taste.

Die Befehle werden nun nacheinander abgearbeitet und, sofern Sie alle Schritte korrekt umgesetzt haben, wird Ihr Endpunkt und das TC neustarten.

Im Script-Ordner finden Sie, falls Sie sich nicht im selben Raum wie der Endpunkt befinden, eine Log Datei (log.txt) in der Sie nachvollziehen können, ob alle Endpunkte kontaktiert werden konnten oder nicht.

Automatische geplante Ausführung des Scripts mithilfe von Microsoft Task Scheduler

Starten Sie auf Ihrem PC / Server den Microsoft Task Scheduler und starten Sie das Tool mit Admin-Berechtigungen.

Klicken Sie auf „Aufgabenplanungsbibliothek“ -> „Microsoft“ -> „Windows“ .

Klicken Sie mit der rechten Taste in das obere weiße Feld und wählen Sie „Neue Aufgabe erstellen“ .

Vergeben Sie einen aussagekräftigen Namen für die neue Aufgabe und wählen Sie „Unabhängig von der Benutzeranmeldung ausführen“. Wählen Sie, durch Klick auf Benutzer oder Gruppe ändern“ „System“ aus. Aktivieren Sie „Mit höchsten Privilegien ausführen“ und klicken Sie auf „Ok“.

Klicken Sie auf den Reiter „Trigger“ und anschließend auf „Neu“ .

Aktivieren Sie die Checkbox „Täglich“ und ändern Sie die Uhrzeit nach Ihren Wünschen ab. In meinem Beispiel triggere ich den Reboot, genau wie bei MTRoW Systemen, nachts um 2.

Achten Sie darauf, dass das Kästchen bei „Aktiviert“ enabled ist und klicken Sie auf „Ok“.

Klicken Sie auf „Aktionen“ und anschließend auf „Neu“.

Stellen Sie sicher, dass unter „Aktion“, „Programm ausführen“ ausgewählt ist.

Neben dem „Durchsuchen“ Feld tragen Sie bitte den folgenden Pfad ein:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Unter „Argumente hinzufügen (optional)“ tragen Sie bitte den folgenden Wert ein:

-ExecutionPolicy Bypass C:\Reboot\reboot.ps1

Unter „Starten in (optional)“ tragen Sie bitte den Pfad zum Ordner ein, in dem sich das Reboot Script befindet. In diesem Fall:

C:\Reboot\

Unter „Argumente hinzufügen (optional)“ tragen Sie bitte den Pfad zu Ihrem erstellten Powershell Script ein (hier „C:\Reboot\reboot.ps1“) .

Navigieren Sie zu Ihrem erstellen „Reboot“ Ordner, wählen Sie die erstelle Powershell Datei aus und klicken Sie auf „Öffnen“.

Bestätigen Sie mit „Ok“ .

Klicken Sie auf den Reiter „Bedingungen“, deaktivieren Sie alle Checkboxen und klicken Sie auf „Ok“ .

Klicken Sie auf „Einstellungen“, setzen Sie die entsprechenden Checkboxen und klicken Sie auf „Ok“.

Geben Sie nun Ihre Admin Account Daten ein und klicken Sie auf „Ok“ .

Ihre Aufgabe sollte nun korrekt erstellt werden und in der Liste erscheinen.

Done 🙂

NOTE:
Das Script kommt aus unserem Support – leider kenne ich den Namen des Programmierers nicht. Kudos daher an Unbekannt. Great job, bud !