Powershell: Windows-Patches auf mehreren Servern

1457
Calculating Machine

Wir haben über 1000 Server und sie werden von WSUS gepatcht. In WSUS haben wir den Patch zugewiesen und anschließend loggen wir uns bei den Servern ein und laden die Patches herunter. Danach starten wir den Rechner gemäß dem Zeitplan neu.

Ich möchte das Herunterladen von Patches und die Installation von Patches automatisieren. Ich habe ein Skript bekommen, aber ich bin mir nicht sicher, ob dies die beste oder eine andere Möglichkeit ist.

Hier ist das Skript

$UpdateSession = New-Object -Com Microsoft.Update.Session $UpdateSearcher = $UpdateSession.CreateUpdateSearcher()  Write-Host("Searching for applicable updates...") -Fore Green  $SearchResult = $UpdateSearcher.Search("IsInstalled=0 and Type='Software'")  Write-Host("") Write-Host("List of applicable items on the machine:") -Fore Green For ($X = 0; $X -lt $SearchResult.Updates.Count; $X++){ $Update = $SearchResult.Updates.Item($X) Write-Host( ($X + 1).ToString() + "> " + $Update.Title) }  If ($SearchResult.Updates.Count -eq 0) { Write-Host("There are no applicable updates.") Exit }  #Write-Host("") #Write-Host("Creating collection of updates to download:") -Fore Green  $UpdatesToDownload = New-Object -Com Microsoft.Update.UpdateColl  For ($X = 0; $X -lt $SearchResult.Updates.Count; $X++){ $Update = $SearchResult.Updates.Item($X) #Write-Host( ($X + 1).ToString() + "> Adding: " + $Update.Title) $Null = $UpdatesToDownload.Add($Update) }  Write-Host("") Write-Host("Downloading Updates...") -Fore Green  $Downloader = $UpdateSession.CreateUpdateDownloader() $Downloader.Updates = $UpdatesToDownload $Null = $Downloader.Download()  #Write-Host("") #Write-Host("List of Downloaded Updates...") -Fore Green  $UpdatesToInstall = New-Object -Com Microsoft.Update.UpdateColl  For ($X = 0; $X -lt $SearchResult.Updates.Count; $X++){ $Update = $SearchResult.Updates.Item($X) If ($Update.IsDownloaded) { #Write-Host( ($X + 1).ToString() + "> " + $Update.Title) $Null = $UpdatesToInstall.Add($Update)  } }  $Install = [System.String]$Args[0] $Reboot = [System.String]$Args[1]  If (!$Install){ $Install = Read-Host("Would you like to install these updates now? (Y/N)") }  If ($Install.ToUpper() -eq "Y" -or $Install.ToUpper() -eq "YES"){ Write-Host("") Write-Host("Installing Updates...") -Fore Green  $Installer = $UpdateSession.CreateUpdateInstaller() $Installer.Updates = $UpdatesToInstall  $InstallationResult = $Installer.Install()  Write-Host("") Write-Host("List of Updates Installed with Results:") -Fore Green  For ($X = 0; $X -lt $UpdatesToInstall.Count; $X++){ Write-Host($UpdatesToInstall.Item($X).Title + ": " + $InstallationResult.GetUpdateResult($X).ResultCode) }  Write-Host("") Write-Host("Installation Result: " + $InstallationResult.ResultCode) Write-Host(" Reboot Required: " + $InstallationResult.RebootRequired)  If ($InstallationResult.RebootRequire -eq $True){ If (!$Reboot){ $Reboot = Read-Host("Would you like to install these updates now? (Y/N)") }  If ($Reboot.ToUpper() -eq "Y" -or $Reboot.ToUpper() -eq "YES"){ Write-Host("") Write-Host("Rebooting...") -Fore Green (Get-WMIObject -Class Win32_OperatingSystem).Reboot() } } } 

Kann dieses Skript Aktivitäten auf mehreren Servern ausführen? Können wir den Bericht zum erfolgreichen Download abrufen / erfolgreich installieren?

Gibt es andere Optionen, um dieselbe Aktivität auszuführen?

Vielen Dank für Ihre Zeit.

0
Was haben Ihre Tests gezeigt? Gab es Fehler? DavidPostill vor 8 Jahren 0
Kein Fehler. Es funktioniert gut auf einer Maschine. Calculating Machine vor 8 Jahren 0
Sie fragen "Kann dieses Skript Aktivitäten auf mehreren Servern ausführen?". Wir können nicht für Sie testen. ** Sie müssen einen ordnungsgemäßen Test durchführen, bevor Sie ein solches Skript bereitstellen. Wir können es nicht für Sie testen. DavidPostill vor 8 Jahren 0
@DavidPostill Ich stimme dir vollkommen zu. Dies ist mein Ansatz, um dies zu erreichen. Ich möchte nur wissen, ob jemand Ähnliches getan hat, dann wäre es sehr hilfreich. Calculating Machine vor 8 Jahren 0
In der Praxis wird in der Regel SCCM für Rechenzentren auf Unternehmensebene verwendet (ich denke, dass sich 1000 Server qualifizieren). Für eine eigene Lösung mit nur WSUS und ohne SCCM würde ich die Server so einstellen, dass das, was ich von WSUS gepusht habe, automatisch installiert und Gruppen von Maschinen für verschiedene Neustartzeiten konfiguriert werden. Dann benutze ich Powershell-Funktionen und eine CSV-Datei mit den entsprechenden Parametern, um sie neu zu starten. Aber im Ernst, SCCM wurde dafür gebaut. Und es gibt Ihnen so viel mehr. Desired State Configuration (DSC) ist auch eine Art und Weise, wie man mit config die Konfiguration von Konfigurationen durchführt. Verwaltung. Ich habe es nicht benutzt, kann es aber auch. Xalorous vor 8 Jahren 0

0 Antworten auf die Frage