PS Skript Client reboot mit Useroption
Moin,
ich denke ich stelle bei google die falschen Fragen....
Um was geht´s?
Ich möchte ein PS Skript schreiben bzw. erstellen welche einen Client neustartet, soweit kein Problem:
restart-computer
so jetzt kommt der Haken an der Sache, ich würde gerne wollen dass der User eine Option bekommt dass er den PC entweder nach 30min oder 60min automatisiert neu starten lässt.
Sozusagen:
User bekommt nach auslösen der Vorgabe (14 tage kein Neustart) ein Fenster welches Ihm zwingend Vorschlägt: willste nach 30 oder 60 min deinen PC/Laptop neustarten oder gleich?
<Neustart 30min> <Neustart 60min> <Neustart SOFORT!>
Und da steigt nun meine PS Fähigkeit aus...
Grundsätzlich, ist sowas mit der PS möglich? Die ist mächtig, nehme die gerne her, aber sowas übersteigt meinen Admin-Horizont.
Bin für Vorschläge offen
LG
ich denke ich stelle bei google die falschen Fragen....
Um was geht´s?
Ich möchte ein PS Skript schreiben bzw. erstellen welche einen Client neustartet, soweit kein Problem:
restart-computer
so jetzt kommt der Haken an der Sache, ich würde gerne wollen dass der User eine Option bekommt dass er den PC entweder nach 30min oder 60min automatisiert neu starten lässt.
Sozusagen:
User bekommt nach auslösen der Vorgabe (14 tage kein Neustart) ein Fenster welches Ihm zwingend Vorschlägt: willste nach 30 oder 60 min deinen PC/Laptop neustarten oder gleich?
<Neustart 30min> <Neustart 60min> <Neustart SOFORT!>
Und da steigt nun meine PS Fähigkeit aus...
Grundsätzlich, ist sowas mit der PS möglich? Die ist mächtig, nehme die gerne her, aber sowas übersteigt meinen Admin-Horizont.
Bin für Vorschläge offen
LG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4560883536
Url: https://administrator.de/forum/ps-skript-client-reboot-mit-useroption-4560883536.html
Ausgedruckt am: 31.03.2025 um 13:03 Uhr
9 Kommentare
Neuester Kommentar

Ja - vermutlich am besten per PS-erstellter geplanter Aufgabe die den PC in 30/60/wasauchimmer Minuten neu startet.
In etwa so:
In etwa so:
$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-Command "Restart-Computer -Force"'
$principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$trigger = New-ScheduledTaskTrigger -At (Get-Date).AddMinutes(30) -Once
Register-ScheduledTask -Action $action -TaskName 'Restart' -TaskPath '\' -Principal $principal -Trigger $trigger

In etwa so? Achtung hässlicher Code 
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()
Add-Type -Assembly System.Drawing
$Form = New-Object system.Windows.Forms.Form
[int32]$height = 100
[int32]$width = 300
$Form.ClientSize = "$width,$height"
$Form.text = "Neustart"
$Form.TopMost = $true
$CenterScreen = [System.Windows.Forms.FormStartPosition]::CenterScreen;
$Form.StartPosition = $CenterScreen
$global:timeToAdd = 0
$label = New-Object system.Windows.Forms.Label
$label.width = 1000
$label.height = 40
$label.text = "Der PC muss neu gestartet werden.`nWann soll der Neustart durchgeführt werden?"
$label.location = New-Object System.Drawing.Point(0, 10)
$button = New-Object system.Windows.Forms.Button
$button.width = 100
$button.height = 30
$button.text = "In 30 Minuten"
$button.location = New-Object System.Drawing.Point(0, 50)
$button.Font = 'Microsoft Sans Serif,10'
$button.Add_Click({
$global:timeToAdd = 30
$form.Close()
})
$button2 = New-Object system.Windows.Forms.Button
$button2.width = 100
$button2.height = 30
$button2.text = "In 60 Minuten"
$button2.location = New-Object System.Drawing.Point(100, 50)
$button2.Font = 'Microsoft Sans Serif,10'
$button2.Add_Click({
$global:timeToAdd = 60
$form.Close()
})
$button3 = New-Object system.Windows.Forms.Button
$button3.width = 100
$button3.height = 30
$button3.text = "Sofort"
$button3.location = New-Object System.Drawing.Point(200, 50)
$button3.Font = 'Microsoft Sans Serif,10'
$button3.Add_Click({
Restart-Computer -Force
$form.Close()
})
$Form.controls.Add($button)
$Form.controls.Add($button2)
$Form.controls.Add($button3)
$Form.Controls.Add($label)
[void]$Form.ShowDialog()
$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-Command "Restart-Computer -Force"'
$principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$trigger = New-ScheduledTaskTrigger -At (Get-Date).AddMinutes($global:timeToAdd) -Once
Register-ScheduledTask -Action $action -TaskName 'Restart' -TaskPath '\' -Principal $principal -Trigger $trigger

Man kann das auch weiter spinnen und z.B. eine stündliche geplante Aufgabe erstellen, die das Skript ausführt und am Anfang des Skriptes die Uptime prüfen und falls > 14 Tage den Rest ausführen..
Und wenn der Knopf zum Beenden weg soll, nach Zeile 4 noch ein einfügen.
Und wenn der Knopf zum Beenden weg soll, nach Zeile 4 noch ein
$Form.FormBorderStyle = 0

Hallo Thomas,
vollkommen richtig und wichtig!
Gruß Thomas
vollkommen richtig und wichtig!
Gruß Thomas