Freigeben über


WSUS und der Microsoft Update-Katalog

Gilt für: Windows Server 2025, 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, kann zum Importieren von Updates verwendet werden.
    • Verwenden Sie beim Importieren von einem WSUS-Server ein Konto, das Mitglied der Gruppe "WSUS-Administratoren" oder der Gruppe "Lokale Administratoren" ist.
    • Verwenden Sie beim 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 den WSUS-Server über das Netzwerk erreichen können.

Der Microsoft Update-Katalog

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

  • Titel aktualisieren
  • BESCHREIBUNG
  • Anwendbare 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 Suchbereich einschränken, indem Sie zusätzliche Suchbegriffe hinzufügen. Um eine bestimmte Zeichenfolge zu durchsuchen, verwenden Sie doppelte Anführungszeichen.

Hinweis

Mit dem Katalog können Sie Updates auch direkt über die Downloadschaltfläche von der Website herunterladen. Updates, die auf diese Weise heruntergeladen werden, sind jedoch im .MSU Format. WSUS kann Keine Aktualisierungen im .MSU Format importieren. Dieser Dateityp wird häufig vom eigenständigen Windows Update-Installationsprogramm, DISM oder anderen Updates-Tools verwendet. Einige Tools erfordern, dass Sie die Dateien aus der .MSU Datei 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, um Aktualisierungen aus diesem Artikel in WSUS in einen Text-Editor zu importieren, und speichern Sie es unter ImportUpdateToWSUS.ps1. Verwenden Sie einen Ort, auf den Sie problemlos zugreifen können, wie z. B. C:\temp.

  2. Öffnen Sie den Microsoft Update-Katalog, https://catalog.update.microsoft.comin 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 Aktualisierungsdetails wird geöffnet.

  5. Verwenden Sie die Schaltfläche "Kopieren " auf der Seite "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 jedes Update ein, das Sie in eine Textdatei importieren möchten. Listen Sie eine Aktualisierungs-ID pro Zeile auf, und speichern Sie die Textdatei, wenn Sie fertig sind. Verwenden Sie einen Ort, auf den Sie problemlos zugreifen können, wie z. B. C:\temp\UpdateIDs.txt.
    • Um ein einzelnes Update zu importieren, müssen Sie nur die einzelne Update-ID 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 mehrere Updates mithilfe von SSL mit der folgenden Syntax in einen WSUS-Server, indem Sie einen Remotecomputer verwenden:

    .\ImportUpdateToWSUS.ps1 -WsusServer WSUSServer.contoso.com -PortNumber 8531 -UseSsl -UpdateIdFilePath C:\temp\UpdateIDs.txt
    
  8. Die Updatedateien für importierte Updates werden basierend auf ihren Updatedateieneinstellungen heruntergeladen. Wenn Sie z. B. die Option zum Herunterladen von Updatedateien auf diesen Server verwenden, wenn Updates genehmigt werden, werden die Updatedateien heruntergeladen, wenn das Update genehmigt wird. Weitere Informationen zu Optionen zum Speichern von Updates finden Sie unter 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: <string>
Gibt den Namen eines WSUS-Servers an. Wenn nicht angegeben, stellt das Skript eine Verbindung mit localhost bereit.

  • Erforderlich: false
  • Standardwert: localhost

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

  • Erforderlich: false
  • 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: false

UpdateId: <>
String 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: true, beim Importieren einer einzelnen updateID, die als Skriptparameter angegeben ist

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

  • Erforderlich: true, wenn Sie eine Textdatei zum Importieren mehrerer Updates verwenden

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

Einschränken des Zugriffs auf Hotfixes

WSUS-Administratoren können den Zugriff auf die Hotfixes einschränken, die sie aus dem Microsoft Update-Katalog heruntergeladen haben. Führen Sie die folgenden Schritte aus, um 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 die Option "Deaktivieren" aus.
  5. Wählen Sie "Windows-Authentifizierung" aus, und wählen Sie im Bereich "Aktionen" auf der rechten Seite die Option "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 Handbuch sowie 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 fest, damit nur Computerkonten dieser Computer sie lesen können. Außerdem müssen Sie dem Netzwerkdienstkonto vollzugriff auf die Dateien erlauben.
  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 werden, die entweder als nicht genehmigt oder abgelehnt festgelegt sind, indem Sie den WSUS-Serverbereinigungs-Assistenten 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.

Von Bedeutung

Stimmen Sie die vom WSUS-Server unterstützten Sprachen mit den von den importierten Updates unterstützten Sprachen überein.

Wenn der WSUS-Server nicht alle sprachen unterstützt, die im Update enthalten sind, wird das Update nicht auf Clientcomputern bereitgestellt. Wenn ein Update, das mehrere Sprachen unterstützt, auf den WSUS-Server heruntergeladen, aber noch nicht auf Clientcomputern bereitgestellt wurde, und ein Administrator eine der sprachen deaktiviert, die im Update enthalten sind, wird das Update nicht für die Clients bereitgestellt.

Problembehandlung

Das ". NOTES"-Abschnitt des Skripts kann für die Problembehandlung verwendet werden, die beim Ausführen des Skripts auftreten können.

  • Wenn ein Fehler auftritt, versuchen Sie, Transport Layer Security (TLS) 1.2 zu aktivieren. Weitere Informationen finden Sie unter Aktivieren von TLS 1.2 auf Clients

  • Sie können den folgenden Befehl verwenden, um den Prozess des Hinzufügens eines Registrierungswerts im Zusammenhang mit der Verwendung starker Krypto zu automatisieren. Starten Sie den Windows Server Update Services-Dienst und den World Wide Web Publishing-Dienst nach dem Hinzufügen des Registrierungswerts manuell neu.

    reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /V SchUseStrongCrypto /T REG_DWORD /D 1
    
  • Führen Sie dieses PowerShell-Skript aus, um den Prozess des Hinzufügens eines Registrierungswerts im Zusammenhang mit der Verwendung starker Krypto zu automatisieren und den Windows Server Update Services-Dienst und den World Wide Web Publishing-Dienst neu zu starten:

    $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
    
  • Aktivitäten und/oder Fehler im Zusammenhang mit dem Importieren von Updates finden Sie in %ProgramFiles%\Update Services\LogFiles\SoftwareDistribution.log des WSUS-Servers, auf dem Updates importiert werden.