Udostępnij za pośrednictwem


Usługi WSUS i wykaz usługi Microsoft Update

Dotyczy: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012

katalogu usługi Microsoft Update to usługa, która udostępnia listę aktualizacji, które mogą być dystrybuowane za pośrednictwem sieci firmowej. Wykaz służy do znajdowania informacji o aktualizacjach oprogramowania, sterownikach i poprawkach firmy Microsoft. Obecnie program WSUS zawiera opcję importowania aktualizacji z katalogu Microsoft Update. Jednak akcja Importuj aktualizacje w programie WSUS została skompilowana przy użyciu usługi ActiveX, która jest teraz przestarzała. Ta funkcja importowania w programie WSUS została zastąpiona skryptem programu PowerShell. Skrypt umożliwia importowanie pojedynczej aktualizacji lub wielu aktualizacji do programu WSUS. Ten artykuł zawiera informacje na temat wykazu, skryptu importu i sposobu używania skryptu.

Wymagania wstępne dotyczące importowania aktualizacji do programu WSUS

Do importowania aktualizacji do programu WSUS za pomocą skryptu programu PowerShell wymagane są następujące wymagania wstępne:

  • Każdy komputer z zainstalowaną konsolą administracyjną programu WSUS, niezależnie od tego, czy jest to serwer programu WSUS, może służyć do importowania aktualizacji.
    • Podczas importowania z serwera programu WSUS użyj konta, które jest członkiem grupy Administratorzy programu WSUS lub grupy Administratorzy lokalni.
    • Podczas importowania z komputera zdalnego użyj konta, które jest członkiem grupy Administratorzy programu WSUS i ma uprawnienia administracyjne na komputerze lokalnym. Komputery zdalne muszą mieć możliwość nawiązania połączenia z serwerem programu WSUS za pośrednictwem sieci.

Wykaz usługi Microsoft Update

Katalog Microsoft Update umożliwia wyszukiwanie różnych pól i kategorii aktualizacji. Te pola aktualizacji obejmują:

  • Aktualizuj tytuł
  • Opis
  • Odpowiednie produkty
  • Klasyfikacje
  • Numery artykułów bazy wiedzy w formacie KB1234567

Podczas wyszukiwania aktualizacji sprzętu lub sterowników można również wyszukać następujące pola:

  • Model sterownika
  • Producent
  • Klasa
  • Identyfikator sprzętu składający się z czterech części, taki jak PCI\VEN_14E4&DEV_1677&SUBSYS_01AD1028.

Zakres wyszukiwania można zawęzić, dodając dodatkowe terminy wyszukiwania. Aby wyszukać określony ciąg, użyj cudzysłowów podwójnych.

Uwaga

Wykaz umożliwia również pobieranie aktualizacji bezpośrednio z witryny przy użyciu przycisku pobierania. Jednak aktualizacje pobrane w ten sposób są w .MSU formacie. Program WSUS nie może importować aktualizacji w formacie .MSU. Ten typ pliku jest często używany przez instalator autonomiczny Windows Update, DISMlub innych narzędzi aktualizacji. Niektóre narzędzia wymagają wyodrębnienia plików z .MSU, zanim będzie można je zastosować.

Importowanie aktualizacji do programu WSUS przy użyciu programu PowerShell

Skorzystaj z poniższych instrukcji, aby zaimportować aktualizacje do programu WSUS:

  1. Skopiuj skrypt programu PowerShell , aby zaimportować aktualizacje do programu WSUS z tego artykułu do edytora tekstów i zapisać go jako ImportUpdateToWSUS.ps1. Użyj lokalizacji, do której można łatwo uzyskać dostęp, na przykład C:\temp.

  2. Otwórz katalog usługi Microsoft Update, https://catalog.update.microsoft.com, w przeglądarce.

  3. Wyszukaj aktualizację, którą chcesz zaimportować do programu WSUS.

  4. Z zwróconej listy wybierz aktualizację, którą chcesz zaimportować do programu WSUS. Zostanie otwarta strona szczegółów aktualizacji.

  5. Użyj przycisku Kopiuj na stronie szczegółów aktualizacji, aby skopiować UpdateID.

  6. Skrypt może służyć do importowania pojedynczej aktualizacji lub wielu aktualizacji.

    • Aby zaimportować wiele aktualizacji do programu WSUS, wklej identyfikatory aktualizacji dla każdej aktualizacji, którą chcesz zaimportować do pliku tekstowego. Wyświetl jeden identyfikator aktualizacji na wiersz, a następnie zapisz plik tekstowy po zakończeniu. Użyj lokalizacji, do której można łatwo uzyskać dostęp, na przykład C:\temp\UpdateIDs.txt.
    • Aby zaimportować pojedynczą aktualizację, wystarczy skopiować tylko pojedynczy identyfikator updateID.
  7. Aby zaimportować aktualizacje, otwórz konsolę programu PowerShell jako administrator i uruchom skrypt z następującą składnią przy użyciu dowolnych wymaganych parametrów :

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

    Przykład 1: Podczas logowania do serwera WSUS używającego portu domyślnego zaimportuj pojedynczą aktualizację przy użyciu następującej składni:

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

    Przykład 2: za pomocą komputera zdalnego zaimportuj wiele aktualizacji do serwera WSUS przy użyciu protokołu SSL z następującą składnią:

    .\ImportUpdateToWSUS.ps1 -WsusServer WSUSServer.contoso.com -PortNumber 8531 -UseSsl -UpdateIdFilePath C:\temp\UpdateIDs.txt
    
  8. Pliki aktualizacji dla importowanych aktualizacji są pobierane na podstawie Plików aktualizacji ustawień. Na przykład, jeśli użyjesz opcji Pobierz pliki aktualizacji do tego serwera tylko wtedy, gdy aktualizacje zostaną zatwierdzone, pliki aktualizacji zostaną pobrane po zatwierdzeniu aktualizacji. Aby uzyskać więcej informacji na temat opcji przechowywania aktualizacji, zobacz sekcję 1.3 Wybieranie strategii magazynowania programu WSUS.

Skrypt programu PowerShell do importowania aktualizacji do programu 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. $_"
    }
}

Parametry skryptu

WsusServer: <ciąg>
Określa nazwę serwera WSUS. Jeśli nie zostanie określony, skrypt łączy się z hostem lokalnym.

  • wymagane: false
  • wartość domyślna: localhost

PortNumber: <Int32>
Określa numer portu do komunikacji z nadrzędnym serwerem WSUS.

  • obowiązkowy: false
  • wartość domyślna: 8530
  • Dozwolone wartości: 80, 443, 8530, 8531

UseSsl: przełącznik <>
Określa, czy protokół SECURE Sockets Layer (SSL) za pośrednictwem protokołu HTTPS powinien służyć do komunikacji z serwerem WSUS. Jeśli ta nazwa parametru jest obecna, wykonywane są testy parametrów $true i nawiązywane jest połączenie z serwerem WSUS przy użyciu protokołu SSL, w przeciwnym razie false. Podczas korzystania z parametru USeSSL w ustawieniach sieciowych, należy ustawić PortNumber na 443 lub 8531.

  • wymagane: false

UpdateId: ciąg <>
Określa identyfikator aktualizacji, który chcesz zaimportować do programu WSUS. Ten parametr jest wymagany w przypadku importowania pojedynczej aktualizacji. Nie można używać UpdateId z UpdateIdFilePath.

  • wymagane: true podczas importowania pojedynczego identyfikatora updateID określonego jako parametr skryptu

UpdateIdFilePath: ciąg <>
Określa ścieżkę do pliku tekstowego zawierającego listę identyfikatorów aktualizacji w każdym wierszu. Ten parametr jest wymagany, jeśli importujesz wiele aktualizacji. UpdateIdFilePath nie można używać z UpdateId.

  • wymagana: true, jeśli używasz pliku tekstowego do importowania wielu aktualizacji

CommonParameters:
Pełne, Debugowanie, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable i OutVariable. Aby uzyskać więcej informacji, zobacz About CommonParameters

Ograniczanie dostępu do poprawek typu hotfix

Administratorzy programu WSUS mogą rozważyć ograniczenie dostępu do poprawek pobranych z wykazu usługi Microsoft Update. Aby ograniczyć dostępne poprawki, wykonaj następujące czynności:

  1. Uruchom konsolę programu Internet Information Services (IIS) Manager.
  2. Przejdź do węzła Content na stronie WSUS Administration strony internetowej.
  3. W panelu Zawartości głównej kliknij dwukrotnie opcję Uwierzytelnianie.
  4. Wybierz Uwierzytelnianie anonimowe i wybierz Wyłącz w okienku Akcje po prawej stronie.
  5. Wybierz pozycję Uwierzytelnianie systemu Windows i wybierz pozycję Włącz w okienku akcji po prawej stronie.
  6. W konsoli administracyjnej programu WSUS utwórz grupę docelową programu WSUS dla komputerów, które wymagają poprawki, i dodaj je do grupy. Aby uzyskać więcej informacji na temat komputerów i grup, zobacz Zarządzanie komputerami klienckimi programu WSUS i grupami komputerów programu WSUS w tym przewodniku oraz Konfigurowanie grup komputerów programu WSUS w przewodniku wdrażania programu WSUS.
  7. Pobierz pliki poprawki.
  8. Ustaw uprawnienia tych plików, aby tylko konta maszyn tych maszyn mogły je odczytać. Należy również zezwolić na pełny dostęp do plików na koncie usługi sieciowej.
  9. Zatwierdź poprawkę dla grupy docelowej programu WSUS utworzonej w kroku 2.

Uwaga

Możesz usunąć aktualizacje zaimportowane z wykazu usługi Microsoft Update, które są ustawione jako Niezatwierdzone lub Odrzucone, za pomocą uruchomienia Kreatora oczyszczania serwera WSUS. Możesz ponownie zaimportować aktualizacje, które zostały wcześniej usunięte z systemów WSUS.

Importowanie aktualizacji w różnych językach

Wykaz zawiera aktualizacje, które obsługują wiele języków.

Ważne

Dopasuj języki obsługiwane przez serwer WSUS z językami obsługiwanymi przez zaimportowane aktualizacje.

Jeśli serwer programu WSUS nie obsługuje wszystkich języków zawartych w aktualizacji, aktualizacja nie zostanie wdrożona na komputerach klienckich. Jeśli aktualizacja obsługująca wiele języków została pobrana na serwer programu WSUS, ale nie została jeszcze wdrożona na komputerach klienckich, a administrator usuwa zaznaczenie jednego z języków zawartych w aktualizacji, aktualizacja nie zostanie wdrożona na klientach.