This commit is contained in:
scriptos 2023-11-29 14:56:08 +01:00
parent 5d36f31544
commit 73731b23b4

View File

@ -1,48 +1,60 @@
# Script Name: windows-updater.ps1 # Script Name: windows-updater.ps1
# Beschreibung: Installiert Windows Updates # Beschreibung: Installiert Windows Updates
# Lauffähig unter Windows Server 2016, 2019 und 2022 # Lauffähig unter Windows Server 2016, 2019 und 2022
# Aufruf: - # Aufruf: -
# Autor: Patrick Asmus # Autor: Patrick Asmus
# Web: https://www.media-techport.de # Web: https://www.media-techport.de
# Git-Reposit.: https://git.media-techport.de/scriptos/windows-updater.git # Git-Reposit.: https://git.media-techport.de/scriptos/windows-updater.git
# Version: 1.0 # Version: 1.0
# Datum: 29.11.2023 # Datum: 29.11.2023
# Modifikation: Initial # Modifikation: Initial
##################################################### #####################################################
# Funktion zur Formatierung des Datums im deutschen Stil # Funktion zur Formatierung des Datums im deutschen Stil
function Format-DeutschesDatum ([datetime] $date) { function Format-DeutschesDatum ([datetime] $date) {
return $date.ToString("dd.MM.yyyy HH:mm:ss") return $date.ToString("dd.MM.yyyy HH:mm:ss")
} }
# Variablen # Variablen
$LogPfad = "C:\logs\windows-updater.log" $LogPfad = "C:\logs\windows-updater.log"
$ModulVerzeichnis = Join-Path -Path $PSScriptRoot -ChildPath "Module" $ModulVerzeichnis = Join-Path -Path $PSScriptRoot -ChildPath "Modules"
$env:PSModulePath += ";$ModulVerzeichnis" $env:PSModulePath += ";$ModulVerzeichnis"
# Importiere das PSWindowsUpdate-Modul # Zeitstempel für das Logfile
Import-Module -Name "PSWindowsUpdate" -Verbose $LogZeitstempel = Format-DeutschesDatum (Get-Date)
$LogEintrag = "Script gestartet am: $LogZeitstempel"
# Überprüfe, ob das Modul erfolgreich geladen wurde Write-Host $LogEintrag
if (Get-Module -Name PSWindowsUpdate -ListAvailable) { $LogEintrag | Out-File -Append -FilePath $LogPfad
Write-Host "PSWindowsUpdate-Modul erfolgreich geladen."
# Importiere das PSWindowsUpdate-Modul
# Installiere Windows-Updates und speichere die Ausgabe Import-Module -Name "PSWindowsUpdate" -Verbose
$Ausgabe = Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot
# Überprüfe, ob das Modul erfolgreich geladen wurde
# Überprüfe, ob ein Neustart erforderlich ist if (Get-Module -Name PSWindowsUpdate -ListAvailable) {
if ($Ausgabe.RestartRequired) { Write-Host "PSWindowsUpdate-Modul erfolgreich geladen."
Write-Host "Ein Neustart ist erforderlich."
} else { # Installiere Windows-Updates und speichere die Ausgabe
Write-Host "Kein Neustart erforderlich." $Ausgabe = Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot
}
# Überprüfe, ob ein Neustart erforderlich ist
# Gib die Ausgabe der Windows-Update-Installation in der Kommandozeile aus und schreibe sie ins Logfile if ($Ausgabe.RestartRequired) {
$Ausgabe | ForEach-Object { Write-Host "Ein Neustart ist erforderlich."
$LogMeldung = "ComputerName: $($_.ComputerName) Result: $($_.Result) KB: $($_.KB) Size: $($_.Size) Title: $($_.Title)" } else {
Write-Host $LogMeldung Write-Host "Kein Neustart erforderlich."
$LogMeldung | Out-File -Append -FilePath $LogPfad }
}
} else { # Gib die Ausgabe der Windows-Update-Installation in der Kommandozeile aus und schreibe sie ins Logfile
Write-Host "Fehler beim Laden des PSWindowsUpdate-Moduls." $Ausgabe | ForEach-Object {
} $LogMeldung = "ComputerName: $($_.ComputerName) Result: $($_.Result) KB: $($_.KB) Size: $($_.Size) Title: $($_.Title)"
Write-Host $LogMeldung
$LogMeldung | Out-File -Append -FilePath $LogPfad
}
} else {
Write-Host "Fehler beim Laden des PSWindowsUpdate-Moduls."
}
# Zeitstempel für das Logfile nach Abschluss des Skripts
$LogZeitstempel = Format-DeutschesDatum (Get-Date)
$LogEintrag = "Script beendet am: $LogZeitstempel"
Write-Host $LogEintrag
$LogEintrag | Out-File -Append -FilePath $LogPfad