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 !
Hallo Uwe,
danke für die Anleitung! Ist es empfohlen die Geräte täglich nachts zu rebooten? Oder mache ich das nur in speziellen Fällen?
Gruß Michael
Hi Michael… Wenn Du keine Probleme mit Deinen Units hast, dann muss prinzipiell gar kein Reboot durchgeführt werden. Das Skript ist für Admins gedacht, die eventuell aktuell Probleme mit freezing bei Units haben.
So ist’s bei uns leider.
Das sorgt schon seit Monaten für Frust und Unverständnis bei den Usern.
Plötzlich sind beim Blick ins TAC mal wieder mehrere Units offline.
Und dann muss immer ein „Turnschuhadmin“ ran um das Stecker raus/rein Spiel zu veranstalten.
Werde das auf jeden Fall mal so implementieren.
Noch schöner wäre es, wenn Poly das im System selbst zur Verfügung stellen würde.
Beim Freezing Bug kommt man ja leider auch nicht mehr online an die Unit um des Restart von extern zu trigger.
Auf jeden Fall vielen Dank an Uwe fürs Aufbereiten in diesem Beitrag und auch Kudos an den Unbekannten Support Hero!
@Thomas, danke für Deinen Kommentar. Derzeit sind einige Änderungen, bezogen auf dieses Issue, in der Mache. Ping mich gern mal auf uwe.ansmann@hp.com und wir tauschen uns dazu aus.
Hallo Uwe,
ich hatte dir diesbezüglich auch schon mal geschrieben, aber keine Antwort bekommen. Kann es sein, dass meine Mail im Spam-Filter gelandet ist?
Gruß Michael
Hi Michael …
ich checke das direkt morgen früh. Sorry, wenns an mir gelegen haben sollte. Ich melde mich asap !