WSUS и каталог центра обновления Майкрософт

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012

Каталог Центра обновления Майкрософт — это служба, которая предоставляет список обновлений, которые могут распространяться по корпоративной сети. Каталог можно использовать для поиска сведений об обновлениях программного обеспечения Майкрософт, драйверах и исправлениях. В настоящее время WSUS включает параметр импорта Обновления из каталога центра обновления Майкрософт. Однако действие импорта Обновления в WSUS было создано с помощью ActiveX, которое теперь устарело. Эта функция импорта в WSUS заменена скриптом PowerShell. Сценарий позволяет импортировать одно обновление или несколько обновлений в WSUS. В этой статье содержатся сведения о каталоге, скрипте импорта и использовании скрипта.

Предварительные требования для импорта обновлений в WSUS

Для импорта обновлений в WSUS с помощью скрипта PowerShell требуются следующие предварительные требования:

  • Любой компьютер с установленной административной консолью WSUS, независимо от того, является ли он сервером WSUS, можно использовать для импорта обновлений.
    • При импорте с сервера WSUS используйте учетную запись, которая входит в группу Администратор istrator wsus или группу локальных Администратор istratorов.
    • При импорте с удаленного компьютера используйте учетную запись, которая входит в группу wsus Администратор istrators и имеет административные разрешения на локальном компьютере. Удаленные компьютеры должны быть в состоянии связаться с сервером WSUS по сети.

Каталог центра обновления Майкрософт

Каталог Центра обновления Майкрософт позволяет выполнять поиск по различным полям и категориям обновлений. К этим полям обновления относятся следующие:

  • Обновление заголовка
  • Description
  • Применимые продукты
  • Классификации
  • Номера статей базы знаний в формате KB1234567

При поиске обновлений оборудования или драйверов можно также найти следующие поля:

  • Модель драйвера
  • Производитель
  • Класс
  • Четырехкомпонентный идентификатор оборудования, например PCI\VEN_14E4&DEV_1677&SUBSYS_01AD1028.

Вы можете сузить область поиска, добавив дополнительные условия поиска. Для поиска определенной строки используйте двойные кавычки.

Примечание.

Каталог также позволяет скачивать обновления непосредственно с сайта с помощью кнопки скачивания. Однако скачанные таким образом обновления находятся в .MSU формате. СЛУЖБЫ WSUS не могут импортировать обновления в .MSU формате. Этот тип файла обычно используется автономным установщиком, DISM или другими средствами обновления Обновл. Windows. Для некоторых средств необходимо извлечь файлы из .MSU них, прежде чем их можно будет использовать.

Импорт обновлений в WSUS с помощью PowerShell

Используйте приведенные ниже инструкции для импорта обновлений в WSUS:

  1. Скопируйте сценарий PowerShell для импорта обновлений в WSUS из этой статьи в текстовый редактор и сохраните его как ImportUpdateToWSUS.ps1. Используйте расположение, к который C:\tempможно легко получить доступ, например.

  2. Откройте каталог Центра обновления Майкрософт в https://catalog.update.microsoft.comбраузере.

  3. Найдите обновление, которое нужно импортировать в WSUS.

  4. В возвращаемом списке выберите обновление, которое необходимо импортировать в WSUS. Откроется страница сведений об обновлении.

  5. Нажмите кнопку "Копировать" на странице сведений об обновлении, чтобы скопировать UpdateID.

  6. Скрипт можно использовать для импорта одного обновления или нескольких обновлений.

    • Чтобы импортировать несколько обновлений в WSUS, вставьте идентификаторы обновлений для каждого обновления, которое необходимо импортировать в текстовый файл. Выведите один идентификатор обновления для каждой строки, а затем сохраните текстовый файл после завершения. Используйте расположение, к который C:\temp\UpdateIDs.txtможно легко получить доступ, например.
    • Чтобы импортировать одно обновление, необходимо скопировать только один идентификатор обновления.
  7. Чтобы импортировать обновления, откройте консоль PowerShell от имени администратора и запустите скрипт со следующим синтаксисом, используя все необходимые параметры:

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

    Пример 1. При входе на сервер WSUS, использующий порт по умолчанию, импортируйте одно обновление с помощью следующего синтаксиса:

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

    Пример 2. Использование удаленного компьютера импортирует несколько обновлений на сервер WSUS с помощью SSL со следующим синтаксисом:

    .\ImportUpdateToWSUS.ps1 -WsusServer WSUSServer.contoso.com -PortNumber 8531 -UseSsl -UpdateIdFilePath C:\temp\UpdateIDs.txt
    
  8. Файлы обновления для импортированных обновлений загружаются на основе параметров файлов обновления. Например, если вы используете параметр скачивания файлов обновления в этот serer только при утверждении обновлений, файлы обновления загружаются при утверждении обновления. Дополнительные сведения о параметрах хранения обновлений см. в разделе 1.3 Выбор стратегии хранения WSUS.

Скрипт PowerShell для импорта обновлений в 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. $_"
    }
}

Параметры скрипта

WsusServer: <строка>
указывает имя сервера WSUS. Если он не указан, скрипт подключается к localhost.

  • Обязательный: false
  • Значение по умолчанию: localhost

PortNumber: <Int32>
Указывает номер порта для взаимодействия с сервером WSUS вышестоящий.

  • Обязательный: false
  • Значение по умолчанию: 8530
  • Допустимые значения: 80, 443, 8530, 8531

UseSsl: <switch>
указывает, следует ли использовать протокол SSL через ПРОТОКОЛ HTTPS для обмена данными с сервером WSUS. Если это имя параметра имеет тесты $true параметров, а соединение выполняется с сервером WSUS с помощью SSL, в противном случае false. При использовании параметра USeSSL задайте для параметра PortNumber значение 443 или 8531.

  • Обязательный: false

UpdateId: <строка>
указывает идентификатор обновления, который требуется импортировать в WSUS. Этот параметр необходим, если вы импортируете одно обновление. UpdateId нельзя использовать с UpdateIdFilePath.

  • Обязательный: true, при импорте одного идентификатора обновления, указанного в качестве параметра скрипта

UpdateIdFilePath: <строка>
указывает путь к текстовому файлу, содержащий список идентификаторов обновлений в каждой строке. Этот параметр требуется, если вы импортируете несколько обновлений. UpdateIdFilePath нельзя использовать с UpdateId.

  • Обязательный: true, при использовании текстового файла для импорта нескольких обновлений

CommonParameters:
Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable и OutVariable. Дополнительные сведения см. в разделе о CommonParameters

Ограничение доступа к исправлениям

Администраторы WSUS могут рассмотреть возможность ограничения доступа к исправлениям, которые они скачали из каталога Центра обновления Майкрософт. Чтобы ограничить доступные исправления, выполните следующие действия.

  1. Запустите консоль диспетчера службы IIS (IIS).
  2. Перейдите к узлу содержимого в веб-сайте WSUS Администратор istration.
  3. На панели "Главная страница содержимого" дважды щелкните параметр проверки подлинности.
  4. Выберите "Анонимная проверка подлинности" и нажмите кнопку "Отключить" в области "Действия" справа.
  5. Выберите проверку подлинности Windows и нажмите кнопку "Включить " в области "Действия " справа.
  6. В административной консоли WSUS создайте целевую группу WSUS для компьютеров, которым требуется исправление, и добавьте их в группу. Дополнительные сведения о компьютерах и группах см. в руководстве по управлению клиентскими компьютерами WSUS и группами компьютеров WSUS и настройке групп компьютеров WSUS в руководстве по развертыванию WSUS.
  7. Скачайте файлы для исправления.
  8. Задайте разрешения этих файлов, чтобы только учетные записи компьютеров этих компьютеров могли читать их. Кроме того, необходимо разрешить учетной записи сетевой службы полный доступ к файлам.
  9. Утвердить исправление для целевой группы WSUS, созданной на шаге 2.

Примечание.

Вы можете удалить обновления, импортированные из каталога обновлений Майкрософт, которые заданы как "Не утверждены " или "Отклонены", выполнив мастер очистки сервера WSUS. Вы можете повторно импортировать обновления, которые ранее были удалены из систем WSUS.

Импорт обновлений на разных языках

Каталог включает обновления, поддерживающие несколько языков.

Внимание

Сопоставляйте языки, поддерживаемые сервером WSUS, с языками, поддерживаемыми импортированными обновлениями.

Если сервер WSUS не поддерживает все языки, включенные в обновление, обновление не будет развернуто на клиентских компьютерах. Если обновление, поддерживающее несколько языков, было загружено на сервер WSUS, но еще не развернуто на клиентских компьютерах, а администратор отменит выбор одного из языков, включенных в обновление, обновление не будет развернуто на клиентах.