Hoe vervelend is het als beheerder om op een computer in te loggen dan  een scheduled task aan te maken om een server/computer op een bepaalde tijd in een herstart te laten gaan. 
Tegen dit probleem liep ik regelmatig aan. En zoals altijd als ik iets meer dan 3x handmatig moet doen dan moet het gescript worden.

Ik heb een script geschreven die met een popup window een restart scheduled voor een bepaalde computer met authenicatie

Zoals je hierboven kan zien kan je een datum en tijd opgeven. De hostname van de Computer en je gebruikersnaam en wachtwoord. Eigenlijk heel simpel maar met deze mogelijkheid kan ik remote de scheduled task toevoegen en wordt de server automatisch herstart.

Hieronder vind je het script

Function UITVOEREN{
         


         $Computername = $ComputerPicker.Text
         $DateTime = $datePicker.text+’ ‘+$TimePicker.Text   
         $reboot = [DateTime]::ParseExact($datetime,”dd/MM/yyyy HH:mm:ss”,[System.Globalization.DateTimeFormatInfo]::InvariantInfo,[System.Globalization.DateTimeStyles]::None)
         $pass = ConvertTo-SecureString -AsPlainText $PasswordPicker.Text -Force
         #$passwordpicker.Text = @()
         $ScheduledTaskcred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $AccountPicker.Text,$pass

        Invoke-Command -ComputerName $Computername -Credential $ScheduledTaskcred -scriptblock {   Unregister-ScheduledJob SystemReboot}
        Invoke-Command -ComputerName $Computername -Credential $ScheduledTaskcred -scriptblock {  $trigger = New-JobTrigger -At $using:reboot -Once 
        Register-ScheduledJob -Name “SystemReboot” -Credential $Global:ScheduledTaskcred -Trigger $trigger -ScriptBlock {Restart-Computer -Force}    } 
        Write-Host -ForegroundColor Yellow “The following machine is scheduled for a reboot”
        Write-host -ForegroundColor Yellow “Hostname = ” -NoNewline; Write-host -ForegroundColor Green “$Computername”
        Write-Host -ForegroundColor Yellow “Time = ” -NoNewline; Write-Host -ForegroundColor Green “$reboot”  
        EINDE
        }

Function EINDE {$mainForm.Close()}


Add-Type -AssemblyName System.Windows.Forms

#Form variable
$Xform = 500
$YForm = 400

# Main Form
$mainForm = New-Object System.Windows.Forms.Form
$font = New-Object System.Drawing.Font(“Microsoft Sans Serif”,10)

$mainForm.Font                        = $font
$mainForm.Width                       = $Xform
$mainForm.Height                      = $Yform

######################################################################################
# DatePicker Label
$datePickerLabel                      = New-Object System.Windows.Forms.Label
$datePickerLabel.Text                 = “Datum”
$datePickerLabel.Location             = “15, 10”
$datePickerLabel.Height               = 22
$datePickerLabel.Width                = 90

# DatePicker
$datePicker                           = New-Object System.Windows.Forms.DateTimePicker
$datePicker.Location                  = “220, 7”
$datePicker.Width                     = “150”
$datePicker.Format                    = [windows.forms.datetimepickerFormat]::custom
$datePicker.CustomFormat              = “dd/MM/yyyy”
######################################################################################

# TimePicker Label
$TimePickerLabel                      = New-Object System.Windows.Forms.Label
$TimePickerLabel.Text                 = “Tijd”
$TimePickerLabel.Location             = “15, 45”
$TimePickerLabel.Height               = 22
$TimePickerLabel.Width                = 90

# TimePicker
$TimePicker                           = New-Object System.Windows.Forms.DateTimePicker
$TimePicker.Location                  = “220, 42”
$TimePicker.Width                     = “150”
$TimePicker.Format                    = [windows.forms.datetimepickerFormat]::custom
$TimePicker.CustomFormat              = “HH:mm:ss”
$TimePicker.ShowUpDown                = $TRUE
######################################################################################

# Computer Label
$ComputerLabel                        = New-Object System.Windows.Forms.Label
$ComputerLabel.Text                   = “Computer”
$ComputerLabel.Location               = “15, 80”
$ComputerLabel.Height                 = 22
$ComputerLabel.Width                  = 90

# ComputerPicker
$ComputerPicker                       = New-Object System.Windows.Forms.TextBox
$ComputerPicker.Location              = “220,77”
$ComputerPicker.Width                 = “150”

######################################################################################
# Account Label
$AccountLabel                         = New-Object System.Windows.Forms.Label
$AccountLabel.Text                    = “Account”
$AccountLabel.Location                = “15, 115”
$AccountLabel.Height                  = 22
$AccountLabel.Width                   = 90

# AccountPicker
$AccountPicker                        = New-Object System.Windows.Forms.TextBox
$AccountPicker.Location               = “220,112”
$AccountPicker.Width                  = “150”
$accountpicker.text                   = “”

######################################################################################
# Password Label
$PasswordLabel                        = New-Object System.Windows.Forms.Label
$PasswordLabel.Text                   = “Password”
$PasswordLabel.Location               = “15, 150”
$PasswordLabel.Height                 = 22
$PasswordLabel.Width                  = 90

# PasswordPicker
$PasswordPicker                       = New-Object Windows.Forms.MaskedTextBox
$passwordPicker.passwordchar          = ‘®’
$PasswordPicker.Location              = “220,147”
$PasswordPicker.Width                 = “150”

#$img                                   = [System.Drawing.Image]::Fromfile(‘c:\tools\logo.jpg’)
$pictureBox                            = new-object Windows.Forms.PictureBox
$pictureBox.Width                      = $img.Size.Width
$pictureBox.Height                     = $img.Size.Height
$pictureBox.Image                      = $img
$pictureBox.Location                   = New-Object System.Drawing.Point(100,185)
$mainForm.controls.add($pictureBox)

######################################################################################

# OD Button
$okButton                              = New-Object System.Windows.Forms.Button
$okButton.Location                     = “15, 320”
$okButton.ForeColor                    = “Black”
$okButton.BackColor                    = “White”
$okButton.Text                         = “OK”
$okButton.add_Click({UITVOEREN})

# OD Button
$cancelButton                          = New-Object System.Windows.Forms.Button
$cancelButton.Location                 = “90, 320”
$cancelButton.ForeColor                = “Black”
$cancelButton.BackColor                = “White”
$cancelButton.Text                     = “Cancel”
$cancelButton.add_Click({EINDE})

######################################################################################

$mainForm.Controls.AddRange(@($datePickerLabel,
                              $datePicker,
                              $TimePickerLabel,
                              $TimePicker,
                              $ComputerLabel,
                              $ComputerPicker,
                              $AccountLabel,
                              $AccountPicker,
                              $PasswordLabel,
                              $PasswordPicker,
                              $pictureBox,
                              $okButton,
                              $cancelButton))

[void] $mainForm.ShowDialog()