mirror of
https://github.com/fleschutz/PowerShell.git
synced 2025-01-13 17:38:45 +01:00
Added new-reboot-task.ps1
This commit is contained in:
parent
04b04602ca
commit
e2c03310dd
115
scripts/new-reboot-task.ps1
Normal file
115
scripts/new-reboot-task.ps1
Normal file
@ -0,0 +1,115 @@
|
||||
# Skript zum erstellen bzw. Anpassen eine Neustarttasks
|
||||
# Stannek GmbH - Version 1.3 - 15.06.2023 ES
|
||||
|
||||
# Diese Skript muss als Administrator ausgeführt werden, ansonsten wird es nicht gestartet
|
||||
#Requires -RunAsAdministrator
|
||||
|
||||
# Parameter
|
||||
$TaskName = "einmaliger Neustart"
|
||||
|
||||
# Assemblys laden
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
|
||||
## Abfrage Fenster ##
|
||||
|
||||
# Erstellt das Hauptfenster
|
||||
$font = New-Object System.Drawing.Font("Arial", 11)
|
||||
$mainForm = New-Object System.Windows.Forms.Form
|
||||
$mainForm.Text = "Neustart-Task planen"
|
||||
$mainForm.Font = $font
|
||||
$mainForm.ForeColor = "Black"
|
||||
$mainForm.BackColor = "White"
|
||||
$mainForm.Width = 300
|
||||
$mainForm.Height = 200
|
||||
$mainForm.StartPosition = "CenterScreen"
|
||||
$mainForm.MaximizeBox = $False
|
||||
|
||||
# Erzeugt das Description Label
|
||||
$DescriptLabel = New-Object System.Windows.Forms.Label
|
||||
$DescriptLabel.Text = "Wann soll der Computer neustarten?"
|
||||
$DescriptLabel.Location = "15, 10"
|
||||
$DescriptLabel.Height = 22
|
||||
$DescriptLabel.Width = 280
|
||||
# Fügt Label zum Hauptfenster hinzu
|
||||
$mainForm.Controls.Add($DescriptLabel)
|
||||
|
||||
|
||||
# Rezeugt das DatePicker Label
|
||||
$datePickerLabel = New-Object System.Windows.Forms.Label
|
||||
$datePickerLabel.Text = "Datum"
|
||||
$datePickerLabel.Location = "15, 45"
|
||||
$datePickerLabel.Height = 22
|
||||
$datePickerLabel.Width = 90
|
||||
# Fügt Label zum Hauptfenster hinzu
|
||||
$mainForm.Controls.Add($datePickerLabel)
|
||||
|
||||
# Erzeugt das TimePicker Label
|
||||
$TimePickerLabel = New-Object System.Windows.Forms.Label
|
||||
$TimePickerLabel.Text = "Uhrzeit"
|
||||
$TimePickerLabel.Location = "15, 80"
|
||||
$TimePickerLabel.Height = 22
|
||||
$TimePickerLabel.Width = 90
|
||||
# Fügt Label zum Hauptfenster hinzu
|
||||
$mainForm.Controls.Add($TimePickerLabel)
|
||||
|
||||
# Erzeugt das DatePicker-Feld
|
||||
$datePicker = New-Object System.Windows.Forms.DateTimePicker
|
||||
$datePicker.Location = "110, 42"
|
||||
$datePicker.Width = "150"
|
||||
$datePicker.Format = [windows.forms.datetimepickerFormat]::custom
|
||||
$datePicker.CustomFormat = "dd/MM/yyyy"
|
||||
# Fügt DatePicker-Feld zum Hauptfenster hinzu
|
||||
$mainForm.Controls.Add($datePicker)
|
||||
|
||||
# Erzeugt das TimePicker-Feld
|
||||
$TimePicker = New-Object System.Windows.Forms.DateTimePicker
|
||||
$TimePicker.Location = "110, 77"
|
||||
$TimePicker.Width = "150"
|
||||
$TimePicker.Format = [windows.forms.datetimepickerFormat]::custom
|
||||
$TimePicker.CustomFormat = "HH:mm"
|
||||
$TimePicker.ShowUpDown = $TRUE
|
||||
# Fügt TimePicker-Feld zum Hauptfenster hinzu
|
||||
$mainForm.Controls.Add($TimePicker)
|
||||
|
||||
# Erzeugt den OK Button
|
||||
$okButton = New-Object System.Windows.Forms.Button
|
||||
$okButton.Location = "15, 130"
|
||||
$okButton.ForeColor = "Black"
|
||||
$okButton.BackColor = "White"
|
||||
$okButton.Text = "OK"
|
||||
# Legt die Button Aktion fest (DialogResult auf OK und Eingabefenster schließen
|
||||
$okButton.add_Click({$mainForm.DialogResult = "OK";$mainForm.close()})
|
||||
# Fügt Button zum Hauptfenster hinzu
|
||||
$mainForm.Controls.Add($okButton)
|
||||
|
||||
# Fensterausgabe
|
||||
[void] $mainForm.ShowDialog()
|
||||
|
||||
## Ende Abfrage Fenster ##
|
||||
|
||||
# Skript abbrechen, wenn Fenster geschlossen wird
|
||||
If ($mainForm.DialogResult -eq "Cancel") {Break}
|
||||
|
||||
# Datum und Uhrzeit aus Abfrage für Task aufbereiten
|
||||
$TaskDatetrigger = Get-Date -Date $datePicker.Value.Date -Hour $TimePicker.Value.TimeOfDay.Hours -Minute $TimePicker.Value.TimeOfDay.Minutes
|
||||
|
||||
# Erstelle Task oder passe vorhanden Task an
|
||||
|
||||
# TaskTrigger Zeit setzen
|
||||
$TaskTrigger = New-ScheduledTaskTrigger -At $TaskDatetrigger -Once
|
||||
|
||||
If ((Get-ScheduledTask -TaskName $Taskname -ErrorAction SilentlyContinue).TaskName -eq $TaskName)
|
||||
{# Setzt den neue Tasktrigger
|
||||
Set-ScheduledTask -TaskName $Taskname -Trigger $TaskTrigger
|
||||
}
|
||||
Else
|
||||
{# Erstellt Neustart Task, da keiner vorhanden ist
|
||||
$TaskAction = New-ScheduledTaskAction -Execute "shutdown.exe" -Argument "/r /f /t 5"
|
||||
$TaskSettings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -ExecutionTimeLimit 00:15:00
|
||||
$TaskSettings.StartWhenAvailable = $false
|
||||
$TaskPrincipal = New-ScheduledTaskPrincipal -UserId $(Get-WMIObject -class Win32_ComputerSystem | select UserName).username -RunLevel Highest -LogonType Interactive
|
||||
Register-ScheduledTask -Action $TaskAction -Trigger $TaskTrigger -Settings $TaskSettings -Principal $TaskPrincipal -TaskName $TaskName -Description "Führt einen Neustart des Computers zu einer festgelegten Zeit aus"
|
||||
}
|
||||
|
||||
# Pruefe Task ob dieser deaktiviert ist
|
||||
If ((Get-ScheduledTask -TaskName $Taskname).State -eq "Disabled") {Enable-ScheduledTask -TaskName $TaskName}
|
Loading…
Reference in New Issue
Block a user