#
# Aufruf: powershell <windows_update.ps1>
#
#
# Was macht das Skript ?
# Das Script holt sich die Windows_update Info (lokal) und meldet diese Liste als Update per Mail. Über Parameter wird gesteuert, ob auch
# Updates eingespielt werden.
#
#
# Ersteller: J. Misselbeck
# Erstellt am: 14.10.2015
# geändert am: von: was:
#
# Variablendeklaration
#
Param(
[Parameter(Mandatory=$True,Position=1)]
[string]$MODE = "CHECK"
)
ipmo c:\scripte\PSWindowsUpdate
function send_mail
{
Param(
[Parameter(Mandatory=$True,Position=1)]
[string]$MODUS = "CHECK"
)
$attachment1="c:\temp\windows_update.txt"
$attachment2="c:\temp\windows_update_install.txt"
$From = "infrastruktur@dingsda.de"
$To = "joachim.misselbeck@dingsda.de"
$Cc = "chef@dingsda.de"
$SMTPServer = "smtp-intern"
$SMTPPort = "25"
$HOSTNAME = hostname
$Username = "joachim.misselbeck@dingsda.de"
$Password = "xxxxxxx"
$subject = "Windows Updates auf" + $HOSTNAME
$body = "Liste der Updates" + " Status der Update reboot?: " + $Status
$message = New-Object System.Net.Mail.MailMessage
$message.subject = $subject
$message.body = $body
$message.to.add($To)
#$message.to.add($Cc)
$message.from = $Username
if ( $MODUS -eq "CHECK" )
{
$subject = "CHECK Windows Updates auf" + $HOSTNAME
$message.attachments.add($attachment1)
}
if ( $MODUS -eq "INSTALL" )
{
$subject = "INSTALL Windows Updates auf" + $HOSTNAME
$message.attachments.add($attachment2)
}
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
#$smtp.EnableSSL = $true
#$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$smtp.Send($message);
}
if ( $MODE -eq "CHECK" )
{
Get-WUList -WindowsUpdate
#Get-WUList -MicrosoftUpdate
# Schreibe Liste in TXT
#"Liste der Windows Updates" | Out-File -Filepath c:\temp\windows_update.txt
$Listall = Get-WUInstall -WindowsUpdate Software -ListOnly
$Status = Get-WURebootStatus
$Listall | Out-File -Filepath c:\temp\windows_update.txt
Start-Sleep -m 50000
send_mail("CHECK")
}
if ( $MODE -eq "INSTALL" )
{
$ListInstallUpdate = Get-WUInstall -WindowsUpdate Software -Acceptall -Autoreboot
#Write-Output "Liste der Microsoft Updates" | Out-File -Append -Filepath c:\temp\microsoft_update.txt
#Get-WUInstall -MicrosoftUpdate -ListOnly | Out-File -Append -FilePath c:\temp\microsoft_update.txt
#Get-WUInstall -MicrosoftUpdate
$Status = Get-WURebootStatus
$ListInstallUpdate | Out-File -Filepath c:\temp\windows_update_install.txt
Start-Sleep -m 50000
send_mail("INSTALL")
#$List-Install-Update | Out-File -append -Filepath c:\temp\windows_update.txt
}