WSUS e o Catálogo do Microsoft Update

Aplica-se a: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2 e Windows Server 2012

O Catálogo do Microsoft Update é um serviço que fornece uma listagem de atualizações que podem ser distribuídas por uma rede corporativa. Você pode usar o catálogo para encontrar informações sobre atualizações de software da Microsoft, drivers e hotfixes. Atualmente, o WSUS inclui uma opção para Importar atualizações do Catálogo do Microsoft Update. No entanto, a ação Importar atualizações no WSUS foi criada usando o ActiveX, que agora foi preterido. Essa funcionalidade de importação no WSUS foi substituída por um script do PowerShell. O script permite importar uma única atualização ou várias para o WSUS. Este artigo fornece informações sobre o catálogo, o script de importação e como utilizá-lo.

Pré-requisitos para importar atualizações para o WSUS

Os seguintes pré-requisitos são necessários para importar atualizações para o WSUS com o script do PowerShell:

  • Qualquer computador que tenha o console administrativo do WSUS instalado, seja um servidor do WSUS ou não, pode ser usado para importar atualizações.
    • Ao importar de um servidor do WSUS, use uma conta que seja membro do grupo de Administradores do WSUS ou do grupo de Administradores Locais.
    • Ao importar de um computador remoto, use uma conta que seja membro do grupo de Administradores do WSUS e tenha permissões administrativas no computador local. Os computadores remotos devem ser capazes de acessar o servidor do WSUS pela rede.

O Catálogo do Microsoft Update

O Catálogo do Microsoft Update permite pesquisar em vários campos e categorias de atualização. Esses campos de atualização incluem:

  • Título da atualização
  • Descrição
  • Produtos aplicáveis
  • Classificações
  • Números de artigos da base de dados de conhecimento no formato de KB1234567

Ao pesquisar atualizações de hardware ou drivers, é possível também pesquisar os seguintes campos:

  • Modelo do driver
  • Fabricante
  • Classe
  • A ID de hardware de quatro partes, como PCI\VEN_14E4&DEV_1677&SUBSYS_01AD1028.

Você pode restringir o escopo da pesquisa adicionando termos de pesquisa adicionais. Para pesquisar uma cadeia de caracteres específica, use aspas duplas.

Observação

O catálogo também permite baixar atualizações diretamente do site usando o botão de download. No entanto, as atualizações baixadas dessa forma estão no formato .MSU. O WSUS não pode importar atualizações no formato .MSU. Esse tipo de arquivo geralmente é usado pelo instalador autônomo do Windows Update, DISM ou outras ferramentas de atualizações. Algumas ferramentas exigem que você extraia os arquivos de .MSU antes que eles possam ser usados.

Importar atualizações para o WSUS usando o PowerShell

Use as instruções abaixo para importar atualizações para o WSUS:

  1. Copie o script do PowerShell para importar atualizações para o WSUS deste artigo em um editor de texto e salve-o como ImportUpdateToWSUS.ps1. Use um local que você pode acessar facilmente, como C:\temp.

  2. Abra o Catálogo do Microsoft Update, https://catalog.update.microsoft.com, em um navegador.

  3. Pesquise uma atualização que você deseja importar para o WSUS.

  4. Na lista retornada, selecione a atualização que você deseja importar para o WSUS. A página de detalhes da atualização é aberta.

  5. Use o botão Copiar na página de detalhes da atualização para copiar a UpdateID.

  6. O script pode ser usado para importar uma única atualização ou várias.

    • Para importar várias atualizações para o WSUS, cole as updateIDs de cada atualização que você deseja importar em um arquivo de texto. Liste uma ID de atualização por linha e salve o arquivo de texto quando terminar. Use um local que você pode acessar facilmente, como C:\temp\UpdateIDs.txt.
    • Para importar uma única atualização, você só precisa copiar a updateID única.
  7. Para importar atualizações, abra um console do PowerShell como administrador e execute o script com a seguinte sintaxe usando todos os parâmetros necessários:

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

    Exemplo 1: uma vez conectado a um servidor do WSUS que usa a porta padrão, importe uma única atualização usando a seguinte sintaxe:

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

    Exemplo 2: usando um computador remoto, importe várias atualizações para um servidor do WSUS usando SSL com a seguinte sintaxe:

    .\ImportUpdateToWSUS.ps1 -WsusServer WSUSServer.contoso.com -PortNumber 8531 -UseSsl -UpdateIdFilePath C:\temp\UpdateIDs.txt
    
  8. Os arquivos de atualização para atualizações importadas são baixados com base nas configurações de Arquivos de atualização. Por exemplo, se você usar a opção de Baixar arquivos de atualização para esse servidor somente quando as atualizações forem aprovadas, os arquivos de atualização serão baixados quando a atualização for aprovada. Para obter mais informações sobre as opções para armazenar atualizações, consulte a seção 1.3 Escolher uma estratégia de armazenamento do WSUS.

Script do PowerShell para importar atualizações para o 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. $_"
    }
}

Parâmetros de script

WsusServer: <string>
Especifica o nome de um servidor do WSUS. Se não for especificado, o script se conectará ao localhost.

  • Obrigatório: false
  • Valor padrão: localhost

PortNumber: <Int32>
Especifica o número da porta a ser usada para se comunicar com o servidor do WSUS upstream.

  • Obrigatório: false
  • Valor padrão: 8530
  • Valores permitidos: 80, 443, 8530, 8531

UseSsl: <switch>
Especifica se o protocolo SSL via HTTPS deve ser usado para se comunicar com o servidor do WSUS. Se esse nome de parâmetro estiver presente, o parâmetro será testado como $true e a conexão será feita com o servidor do WSUS usando SSL, caso contrário, false. Ao usar o parâmetro USeSSL, defina o PortNumber como 443 ou 8531.

  • Obrigatório: false

UpdateId: <string>
Especifica a ID da atualização que você deseja importar para o WSUS. Esse parâmetro será necessário se você estiver importando uma única atualização. UpdateId não pode ser usado com UpdateIdFilePath.

  • Obrigatório: true, ao importar uma única updateID especificada como um parâmetro de script

UpdateIdFilePath: <string>
Especifica o caminho para um arquivo de texto que contém uma lista de IDs de atualização em cada linha. Esse parâmetro será necessário se você estiver importando várias atualizações. UpdateIdFilePath não pode ser usado com UpdateId.

  • Obrigatório: true, ao usar um arquivo de texto para importar várias atualizações

CommonParameters:
Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable e OutVariable. Para obter mais informações, confira Sobre CommonParameters

Como restringir o acesso a hotfixes

Os administradores do WSUS podem considerar a possibilidade de restringir o acesso aos hotfixes baixados do Catálogo do Microsoft Update. Para restringir os hotfixes disponíveis, conclua as seguintes etapas:

  1. Inicie o console Gerenciador do IIS (Serviços de Informações da Internet).
  2. Navegue até o nó Conteúdo no site Administração do WSUS.
  3. No painel Página Inicial do Conteúdo, clique duas vezes na opção Autenticação.
  4. Selecione Autenticação Anônima e Desabilitar no painel Ações à direita.
  5. Escolha Autenticação do Windows e Habilitar no painel Ações à direita.
  6. No console administrativo do WSUS, crie um grupo de destino do WSUS para os computadores que precisam do hotfix e adicione-os ao grupo. Para obter mais informações sobre computadores e grupos, confira Como gerenciar computadores cliente do WSUS e grupos de computadores do WSUS neste guia e Configurar grupos de computadores do WSUS no guia de implantação do WSUS.
  7. Baixe os arquivos do hotfix.
  8. Defina as permissões desses arquivos para que somente as contas desses computadores possam lê-las. Você também precisará permitir que a conta de Serviço de Rede tenha acesso completo aos arquivos.
  9. Aprove o hotfix para o grupo de destino do WSUS criado na Etapa 2.

Observação

Você pode remover as atualizações importadas do Catálogo do Microsoft Update definidas como Não Aprovadas ou Recusadas, executando o Assistente de Limpeza de Servidor do WSUS. Você pode importar novamente as atualizações que foram removidas anteriormente de seus sistemas WSUS.

Como importar as atualizações em idiomas diferentes

O catálogo inclui atualizações que dão suporte a vários idiomas.

Importante

Corresponda os idiomas compatíveis com o servidor do WSUS com os idiomas compatíveis com as atualizações importadas.

Se o servidor do WSUS não der suporte a todos os idiomas incluídos na atualização, a atualização não será implantada nos computadores cliente. Se uma atualização que dá suporte a vários idiomas tiver sido baixada para o servidor do WSUS, mas ainda não tiver sido implantada nos computadores cliente, e um administrador desmarcar um dos idiomas incluídos na atualização, a atualização não será implantada nos clientes.