WSUS und der Microsoft Update-Katalog

Gilt für: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012

Der Microsoft Update-Katalog ist ein Dienst, der eine Auflistung von Updates bereitstellt, die über ein Unternehmensnetzwerk verteilt werden können. Sie können den Katalog verwenden, um Informationen zu Microsoft-Softwareupdates, Treibern und Hotfixes zu finden. WSUS enthält derzeit eine Option zum Importieren von Updates aus dem Microsoft Update-Katalog. Die Aktion Updates importieren in WSUS wurde jedoch mit ActiveX erstellt, das jetzt veraltet ist. Diese Importfunktion in WSUS wurde durch ein PowerShell-Skript ersetzt. Mit dem Skript können Sie ein einzelnes Update oder mehrere Updates in WSUS importieren. Dieser Artikel enthält Informationen zum Katalog, zum Importskript und zur Verwendung des Skripts.

Voraussetzungen für das Importieren von Updates in WSUS

Die folgenden Voraussetzungen sind erforderlich, um Updates mit dem PowerShell-Skript in WSUS zu importieren:

  • Jeder Computer, auf dem die WSUS-Verwaltungskonsole installiert ist, unabhängig davon, ob es sich um einen WSUS-Server handelt oder nicht, kann zum Importieren von Updates verwendet werden.
    • Verwenden Sie für das Importieren von einem WSUS-Server ein Konto, das Mitglied der Gruppe „WSUS-Administratoren“ oder der Gruppe „Lokale Administratoren“ ist.
    • Verwenden Sie für das Importieren von einem Remotecomputer ein Konto, das Mitglied der Gruppe „WSUS-Administratoren“ ist und über Administratorberechtigungen auf dem lokalen Computer verfügt. Remotecomputer müssen in der Lage sein, den WSUS-Server über das Netzwerk zu erreichen.

Der Microsoft Update-Katalog

Mit dem Microsoft Update-Katalog können Sie nach verschiedenen Updatefeldern und Kategorien suchen. Zu diesen Updatefeldern gehören:

  • Titel des Updates
  • Beschreibung
  • Geeignete Produkte
  • Klassifizierungen
  • Wissensdatenbank-Artikelnummern im Format KB1234567

Wenn Sie nach Hardwareupdates oder Treibern suchen, können Sie auch nach den folgenden Feldern suchen:

  • Treibermodell
  • Hersteller
  • Klasse
  • Die vierteilige Hardware-ID, z. B. PCI\VEN_14E4&DEV_1677&SUBSYS_01AD1028.

Sie können den Bereich Ihrer Suche einschränken, indem Sie zusätzliche Suchbegriffe hinzufügen. Um eine bestimmte Zeichenfolge zu suchen, verwenden Sie doppelte Anführungszeichen.

Hinweis

Mit dem Katalog können Sie Updates auch direkt mit der Downloadschaltfläche von der Website herunterladen. Updates, die auf diese Weise heruntergeladen werden, sind jedoch im .MSU-Format. WSUS kann keine Updates im .MSU-Format importieren. Dieser Dateityp wird häufig vom eigenständigen Windows Update-Installationsprogramm, von DISM oder anderen Updates-Tools verwendet. Einige Tools erfordern, dass Sie die Dateien aus .MSU extrahieren, bevor sie verwendet werden können.

Importieren von Updates in WSUS mithilfe von PowerShell

Verwenden Sie die folgenden Anweisungen, um Updates in WSUS zu importieren:

  1. Kopieren Sie das PowerShell-Skript zum Importieren von Updates in WSUS aus diesem Artikel in einen Text-Editor, und speichern Sie es als ImportUpdateToWSUS.ps1. Verwenden Sie einen Ort, auf den Sie problemlos zugreifen können, z. B. C:\temp.

  2. Öffnen Sie den Microsoft Update-Katalog, https://catalog.update.microsoft.com, in einem Browser.

  3. Suchen Sie nach einem Update, das Sie in WSUS importieren möchten.

  4. Wählen Sie in der zurückgegebenen Liste das Update aus, das Sie in WSUS importieren möchten. Die Seite mit den Updatedetails wird geöffnet.

  5. Verwenden Sie die Schaltfläche Kopieren auf der Seite mit den Updatedetails, um die UpdateID zu kopieren.

  6. Das Skript kann verwendet werden, um ein einzelnes Update oder mehrere Updates zu importieren.

    • Um mehrere Updates in WSUS zu importieren, fügen Sie die updateIDs für alle Updates, die Sie importieren wollen, in eine Textdatei ein. Führen Sie eine Update-ID pro Zeile auf, und speichern Sie die Textdatei, wenn Sie fertig sind. Verwenden Sie einen Ort, auf den Sie problemlos zugreifen können, z. B. C:\temp\UpdateIDs.txt.
    • Um ein einzelnes Update zu importieren, müssen Sie nur die einzelne updateID kopieren.
  7. Um Updates zu importieren, öffnen Sie eine PowerShell-Konsole als Administrator, und führen Sie das Skript mit der folgenden Syntax mit allen erforderlichen Parametern aus:

    C:\temp\ImportUpdateToWSUS.ps1 [-WsusServer] <String> [-PortNumber] <Int32> [-UseSsl] [-UpdateId] <String> [-UpdateIdFilePath] <string> [<CommonParameters>]
    

    Beispiel 1: Während sie bei einem WSUS-Server angemeldet sind, der den Standardport verwendet, importieren Sie ein einzelnes Update mithilfe der folgenden Syntax:

    .\ImportUpdateToWSUS.ps1 -UpdateId 12345678-90ab-cdef-1234-567890abcdef
    

    Beispiel 2: Importieren Sie über einen Remotecomputer mehrere Updates in einen WSUS-Server mithilfe von SSL mit der folgenden Syntax:

    .\ImportUpdateToWSUS.ps1 -WsusServer WSUSServer.contoso.com -PortNumber 8531 -UseSsl -UpdateIdFilePath C:\temp\UpdateIDs.txt
    
  8. Die Updatedateien für importierte Updates werden basierend auf den Einstellungen Ihrer Updatedateien heruntergeladen. Wenn Sie z. B. die Option Herunterladen von Updatedateien auf diesen Server nur, wenn Updates genehmigt sind verwenden, werden die Updatedateien heruntergeladen, wenn das Update genehmigt ist. Weitere Informationen über Optionen zum Speichern von Updates finden Sie im Abschnitt 1.3 Auswählen einer WSUS-Speicherstrategie.

PowerShell-Skript zum Importieren von Updates in WSUS

<#
.SYNOPSIS
Powershell script to import an update, or multiple updates into WSUS based on the UpdateID from the catalog.

.DESCRIPTION
This script takes user input and attempts to connect to the WSUS server.
Then it tries to import the update using the provided UpdateID from the catalog.

.INPUTS
The script takes WSUS server Name/IP, WSUS server port, SSL configuration option and UpdateID as input. UpdateID can be viewed and copied from the update details page for any update in the catalog, https://catalog.update.microsoft.com. 

.OUTPUTS
Writes logging information to standard output.

.EXAMPLE
# Use with remote server IP, port and SSL
.\ImportUpdateToWSUS.ps1 -WsusServer 127.0.0.1 -PortNumber 8531 -UseSsl -UpdateId 12345678-90ab-cdef-1234-567890abcdef

.EXAMPLE
# Use with remote server Name, port and SSL
.\ImportUpdateToWSUS.ps1 -WsusServer WSUSServer1.us.contoso.com -PortNumber 8531 -UseSsl -UpdateId 12345678-90ab-cdef-1234-567890abcdef

.EXAMPLE
# Use with remote server IP, defaultport and no SSL
.\ImportUpdateToWSUS.ps1 -WsusServer 127.0.0.1  -UpdateId 12345678-90ab-cdef-1234-567890abcdef

.EXAMPLE
# Use with localhost default port
.\ImportUpdateToWSUS.ps1 -UpdateId 12345678-90ab-cdef-1234-567890abcdef

.EXAMPLE
# Use with localhost default port, file with updateID's
.\ImportUpdateToWSUS.ps1 -UpdateIdFilePath .\file.txt


.NOTES  
# On error, try enabling TLS: https://learn.microsoft.com/mem/configmgr/core/plan-design/security/enable-tls-1-2-client

# Sample registry add for the WSUS server from command line. Restarts the WSUSService and IIS after adding:
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /V SchUseStrongCrypto /T REG_DWORD /D 1

## Sample registry add for the WSUS server from PowerShell. Restarts WSUSService and IIS after adding:
$registryPath = "HKLM:\Software\Microsoft\.NETFramework\v4.0.30319"
$Name = "SchUseStrongCrypto"
$value = "1" 
if (!(Test-Path $registryPath)) {
    New-Item -Path $registryPath -Force | Out-Null
}
New-ItemProperty -Path $registryPath -Name $name -Value $value -PropertyType DWORD -Force | Out-Null
Restart-Service WsusService, w3svc

# Update import logs/errors are under %ProgramFiles%\Update Services\LogFiles\SoftwareDistribution.log

#>

param(
    [Parameter(Mandatory = $false, HelpMessage = "Specifies the name of a WSUS server, if not specified connects to localhost")]
    # Specifies the name of a WSUS server, if not specified connects to localhost.
    [string]$WsusServer,

    [Parameter(Mandatory = $false, HelpMessage = "Specifies the port number to use to communicate with the upstream WSUS server, default is 8530")]
    # Specifies the port number to use to communicate with the upstream WSUS server, default is 8530.
    [ValidateSet("80", "443", "8530", "8531")]
    [int32]$PortNumber = 8530,

    [Parameter(Mandatory = $false, HelpMessage = "Specifies that the WSUS server should use Secure Sockets Layer (SSL) via HTTPS to communicate with an upstream server")]
    # Specifies that the WSUS server should use Secure Sockets Layer (SSL) via HTTPS to communicate with an upstream server.  
    [Switch]$UseSsl,

    [Parameter(Mandatory = $true, HelpMessage = "Specifies the update Id we should import to WSUS", ParameterSetName = "Single")]
    # Specifies the update Id we should import to WSUS
    [ValidateNotNullOrEmpty()]
    [String]$UpdateId,

    [Parameter(Mandatory = $true, HelpMessage = "Specifies path to a text file containing a list of update ID's on each line", ParameterSetName = "Multiple")]
    # Specifies path to a text file containing a list of update ID's on each line.
    [ValidateNotNullOrEmpty()]
    [String]$UpdateIdFilePath
)

Set-StrictMode -Version Latest

# set server options
$serverOptions = "Get-WsusServer"
if ($psBoundParameters.containsKey('WsusServer')) { $serverOptions += " -Name $WsusServer -PortNumber $PortNumber" }
if ($UseSsl) { $serverOptions += " -UseSsl" }

# empty updateID list
$updateList = @()

# get update id's
if ($UpdateIdFilePath) {
    if (Test-Path $UpdateIdFilePath) {
        foreach ($id in (Get-Content $UpdateIdFilePath)) {
            $updateList += $id.Trim()
        }
    }
    else {
        Write-Error "[$UpdateIdFilePath]: File not found"
		return
    }
}
else {
    $updateList = @($UpdateId)
}

# get WSUS server
Try {
    Write-Host "Attempting WSUS Connection using $serverOptions... " -NoNewline
    $server = invoke-expression $serverOptions
    Write-Host "Connection Successful"
}
Catch {
    Write-Error $_
    return
}

# empty file list
$FileList = @()

# call ImportUpdateFromCatalogSite on WSUS
foreach ($uid in $updateList) {
    Try {
        Write-Host "Attempting WSUS update import for Update ID: $uid... " -NoNewline
        $server.ImportUpdateFromCatalogSite($uid, $FileList)
        Write-Host "Import Successful"
    }
    Catch {
        Write-Error "Failed. $_"
    }
}

Skriptparameter

WsusServer: <Zeichenfolge>
Gibt den Namen eines WSUS-Servers an. Wenn nicht angegeben, stellt das Skript eine Verbindung mit Localhost her.

  • Erforderlich: FALSCH
  • Standardwert: Localhost

PortNumber: <Int32>
Gibt die Portnummer an, die für die Kommunikation mit dem vorgelagerten WSUS-Server verwendet werden soll.

  • Erforderlich: FALSCH
  • Standardwert: 8530
  • Zulässige Werte: 80, 443, 8530, 8531

UseSsl: <Switch>
Gibt an, ob SSL (Secure Sockets Layer) über HTTPS für die Kommunikation mit dem WSUS-Server verwendet werden soll. Wenn dieser Parametername vorhanden ist, testet der Parameter $true, und die Verbindung zum WSUS-Server wird über SSL hergestellt, andernfalls false. Wenn Sie den Parameter USeSSL verwenden, legen Sie die PortNumber entweder auf 443 oder 8531 fest.

  • Erforderlich: FALSCH

UpdateId: <Zeichenfolge>
Gibt die Update-ID an, die Sie in WSUS importieren möchten. Dieser Parameter ist erforderlich, wenn Sie ein einzelnes Update importieren. UpdateId kann nicht mit UpdateIdFilePath verwendet werden.

  • Erforderlich: WAHR beim Importieren einer einzelnen updateID, die als Skriptparameter angegeben ist

UpdateIdFilePath: <Zeichenfolge>
Gibt den Pfad zu einer Textdatei an, die eine Liste der Update-IDs enthält, eine pro Zeile. Dieser Parameter ist erforderlich, wenn Sie mehrere Updates importieren. UpdateIdFilePath kann nicht mit UpdateId verwendet werden.

  • Erforderlich: WAHR bei der Verwendung einer Textdatei zum Importieren mehrerer Updates

CommonParameters:
Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable und OutVariable. Weitere Informationen finden Sie unter Infos zu CommonParameters

Einschränken des Zugriffs auf Hotfixes

WSUS-Administratoren können erwägen, den Zugriff auf die Hotfixes einzuschränken, die sie aus dem Microsoft Update-Katalog heruntergeladen haben. Führen Sie die folgenden Schritte aus, um den Zugriff auf die verfügbaren Hotfixes einzuschränken:

  1. Starten Sie die Internetinformationsdienste (IIS)-Manager-Konsole.
  2. Navigieren Sie unter der WSUS-Verwaltungswebsite zum Knoten Inhalt.
  3. Doppelklicken Sie im Bereich Inhaltsstart auf Authentifizierung.
  4. Wählen Sie Anonyme Authentifizierung und dann im Bereich Aktionen auf der rechten Seite Deaktivieren aus.
  5. Wählen Sie Windows-Authentifizierung und dann im Bereich Aktionen auf der rechten Seite Aktivieren aus.
  6. Erstellen Sie in der WSUS-Verwaltungskonsole eine WSUS-Zielgruppe für die Computer, die den Hotfix benötigen, und fügen Sie sie der Gruppe hinzu. Weitere Informationen zu Computern und Gruppen finden Sie unter Verwalten von WSUS-Clientcomputern und WSUS-Computergruppen in diesem Leitfaden und unter Konfigurieren von WSUS-Computergruppen im WSUS-Bereitstellungshandbuch.
  7. Laden Sie die Dateien für den Hotfix herunter.
  8. Legen Sie die Berechtigungen dieser Dateien so fest, dass nur Computerkonten dieser Computer sie lesen können. Außerdem müssen Sie dem Konto „Netzwerkdienst“ (Network Service) Vollzugriff auf die Dateien gewähren.
  9. Genehmigen Sie den Hotfix für die in Schritt 2 erstellte WSUS-Zielgruppe.

Hinweis

Sie können Updates entfernen, die aus dem Microsoft Update-Katalog importiert wurden und entweder als Nicht genehmigt oder Abgelehnt festgelegt sind, indem Sie den Assistenten für die WSUS-Serverbereinigung ausführen. Sie können Updates, die zuvor aus Ihren WSUS-Systemen entfernt wurden, erneut importieren.

Importieren von Updates in verschiedenen Sprachen

Der Katalog enthält Updates, die mehrere Sprachen unterstützen.

Wichtig

Passen Sie die Sprachen, die vom WSUS-Server unterstützt werden, an die Sprachen an, die von den importierten Updates unterstützt werden.

Wenn der WSUS-Server nicht alle im Update enthaltenen Sprachen unterstützt, wird das Update auf Clientcomputern nicht bereitgestellt. Wenn ein Update, das mehrere Sprachen unterstützt, auf den WSUS-Server heruntergeladen, aber noch nicht auf Clientcomputern bereitgestellt wurde, und ein Administrator die Auswahl einer der im Update enthaltenen Sprachen aufhebt, wird das Update auf den Clients nicht bereitgestellt.