Compartir a través de


WSUS y el catálogo de Microsoft Update

Se aplica a: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012

El Catálogo de Microsoft Update es un servicio que proporciona una lista de actualizaciones que se pueden distribuir a través de una red corporativa. Puede usar el catálogo para encontrar información sobre actualizaciones de software, controladores y revisiones de Microsoft. WSUS incluye actualmente una opción para importar actualizaciones desde el catálogo de Microsoft Update. Sin embargo, la acción Importar actualizaciones en WSUS se creó con ActiveX, que ahora está en desuso. Esta funcionalidad de importación en WSUS se ha reemplazado por un script de PowerShell El script permite importar una sola actualización o varias actualizaciones en WSUS. En este artículo se proporciona información sobre el catálogo, el script de importación y cómo usar el script.

Requisitos previos para importar actualizaciones en WSUS

Los siguientes requisitos previos son necesarios para importar actualizaciones en WSUS con el script de PowerShell:

  • Cualquier equipo que tenga instalada la consola administrativa de WSUS, tanto si es un servidor WSUS como si no, se puede usar para importar actualizaciones.
    • Al importar desde un servidor WSUS, use una cuenta que sea miembro del grupo Administradores de WSUS o del grupo Administradores locales.
    • Al importar desde un equipo remoto, use una cuenta que sea miembro del grupo Administradores de WSUS y tenga permisos administrativos en el equipo local. Los equipos remotos deben poder acceder al servidor WSUS a través de la red.

Catálogo de Microsoft Update

El catálogo de Microsoft Update le permite buscar en varios campos y categorías de actualización. Estos campos de actualización incluyen:

  • Actualizar título
  • Descripción
  • Productos aplicables
  • Clasificaciones
  • Números de artículos de knowledge base en el formato de KB1234567

Al buscar actualizaciones de hardware o controladores, también puede buscar los siguientes campos:

  • Modelo de controlador
  • Fabricante
  • Clase
  • Identificador de hardware compuesto de cuatro partes, como PCI\VEN_14E4&DEV_1677&SUBSYS_01AD1028.

Puede restringir el ámbito de la búsqueda agregando términos de búsqueda adicionales. Para buscar en una cadena específica, use comillas dobles.

Nota:

El catálogo también le permite descargar actualizaciones directamente desde el sitio mediante el botón de descarga. Sin embargo, las actualizaciones descargadas de esta manera están en .MSU formato. WSUS no puede importar actualizaciones en .MSU formato. El instalador independiente de Windows Update, DISM u otras herramientas de actualizaciones suele usar este tipo de archivo. Algunas herramientas requieren que se extraigan los archivos de .MSU antes de que se puedan usar.

Importación de actualizaciones en WSUS mediante PowerShell

Use las instrucciones siguientes para importar actualizaciones en WSUS:

  1. Copie el script de PowerShell para importar actualizaciones en WSUS desde este artículo en un editor de texto y guárdelo como ImportUpdateToWSUS.ps1. Use una ubicación a la que pueda acceder fácilmente, como C:\temp.

  2. Abra el Catálogo de Microsoft Update, https://catalog.update.microsoft.com, en un explorador.

  3. Busque una actualización que quiera importar en WSUS.

  4. En la lista devuelta, seleccione la actualización que desea importar en WSUS. Se abre la página de detalles de la actualización.

  5. Use el botón Copiar de la página de detalles de actualización para copiar updateID.

  6. El script se puede usar para importar una sola actualización o varias actualizaciones.

    • Para importar varias actualizaciones en WSUS, pegue los identificadores de actualización de cada actualización que quiera importar en un archivo de texto. Enumere un identificador de actualización por línea y guarde el archivo de texto cuando haya terminado. Use una ubicación a la que pueda acceder fácilmente, como C:\temp\UpdateIDs.txt.
    • Para importar una sola actualización, solo tiene que copiar el identificador de actualización único.
  7. Para importar actualizaciones, abra una consola de PowerShell como administrador y ejecute el script con la sintaxis siguiente mediante los parámetros necesarios:

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

    Ejemplo 1: Mientras ha iniciado sesión en un servidor WSUS que usa el puerto predeterminado, importe una única actualización mediante la sintaxis siguiente:

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

    Ejemplo 2: Con un equipo remoto, importe varias actualizaciones en un servidor WSUS mediante SSL con la sintaxis siguiente:

    .\ImportUpdateToWSUS.ps1 -WsusServer WSUSServer.contoso.com -PortNumber 8531 -UseSsl -UpdateIdFilePath C:\temp\UpdateIDs.txt
    
  8. Los archivos de actualización de las actualizaciones que se importan se descargan en función de la configuración de los archivos de actualización . Por ejemplo, si usa la opción Descargar archivos de actualización en este servidor solo cuando se aprueban las actualizaciones, los archivos de actualización se descargan cuando se aprueba la actualización. Para obtener más información sobre las opciones para almacenar actualizaciones, consulte la sección 1.3 Elegir una estrategia de almacenamiento de WSUS.

Script de PowerShell para importar actualizaciones en 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: <cadena>
Especifica el nombre de un servidor WSUS. Si no se especifica, el script se conecta a localhost.

  • Obligatorio: false
  • Valor predeterminado: localhost

PortNumber: <Int32>
Especifica el número de puerto que se va a usar para comunicarse con el servidor WSUS ascendente.

  • Obligatorio: false
  • Valor predeterminado: 8530
  • Valores permitidos: 80, 443, 8530, 8531

UseSsl: <switch>
Especifica si se debe usar capa de sockets seguros (SSL) a través de HTTPS para comunicarse con el servidor WSUS. Si este nombre de parámetro está presente, el parámetro comprueba $true y se establece la conexión al servidor WSUS mediante SSL; de lo contrario, false. Al usar el parámetro USeSSL , establezca PortNumber en 443 o 8531.

  • Obligatorio: false

UpdateId: <cadena>
Especifica el identificador de actualización que desea importar a WSUS. Este parámetro es necesario si va a importar una única actualización. UpdateId no se puede usar con UpdateIdFilePath.

  • Obligatorio: true, al importar un único updateID especificado como parámetro de script

UpdateIdFilePath: <cadena>
Especifica la ruta de acceso a un archivo de texto que contiene una lista de identificadores de actualización en cada línea. Este parámetro es necesario si va a importar varias actualizaciones. UpdateIdFilePath no se puede usar con UpdateId.

  • Obligatorio: true, cuando se usa un archivo de texto para importar varias actualizaciones

CommonParameters:
Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable y OutVariable. Para obtener más información, consulte Acerca de CommonParameters.

Restringiendo acceso a actualizaciones rápidas

Los administradores de WSUS podrían considerar restringir el acceso a los parches que han descargado del catálogo de Microsoft Update. Para restringir las revisiones disponibles, complete los pasos siguientes:

  1. Inicie la consola del Administrador de Internet Information Services (IIS).
  2. Vaya al nodo Contenido en el sitio web de administración de WSUS .
  3. En el panel Inicio del contenido , haga doble clic en la opción Autenticación .
  4. Seleccione Autenticación anónima y seleccione Deshabilitar en el panel Acciones de la derecha.
  5. Seleccione Autenticación de Windows y seleccione Habilitar en el panel Acciones de la derecha.
  6. En la consola administrativa de WSUS, cree un grupo de destino de WSUS para los equipos que necesitan el hotfix y agréguelos al grupo. Para obtener más información sobre equipos y grupos, vea Administración de equipos cliente de WSUS y grupos de equipos WSUS en esta guía y Configuración de grupos de equipos WSUS en la guía de implementación de WSUS.
  7. Descargue los archivos para el hotfix.
  8. Establezca los permisos de estos archivos para que solo las cuentas de equipo de esas máquinas puedan leerlos. También deberá permitir que la cuenta de servicio de red tenga acceso completo a los archivos.
  9. Apruebe el hotfix para el grupo de destino de WSUS creado en el paso 2.

Nota:

Puede quitar las actualizaciones importadas del catálogo de Microsoft Update que se establecen como No aprobadas o rechazadas, ejecutando el Asistente para limpieza del servidor WSUS. Puede volver a importar las actualizaciones que se han quitado previamente de los sistemas WSUS.

Importación de actualizaciones en distintos idiomas

El catálogo incluye actualizaciones que admiten varios idiomas.

Importante

Haga coincidir los idiomas que se admiten en el servidor WSUS con los que se admiten en las actualizaciones importadas.

Si el servidor WSUS no admite todos los idiomas incluidos en la actualización, la actualización no se implementará en los equipos cliente. Si se ha descargado una actualización compatible con varios idiomas en el servidor WSUS, pero aún no se ha implementado en los equipos cliente, y un administrador anula la selección de uno de los idiomas incluidos en la actualización, la actualización no se implementará en los clientes.

Solución de problemas

La sección ".NOTES" del script se puede usar para solucionar problemas que pueden producirse al ejecutar el script.

  • Si recibe un error, pruebe a habilitar la seguridad de la capa de transporte (TLS) 1.2. Para más información, consulte Habilitación de TLS 1.2 en clientes.

  • Puede usar el siguiente comando para automatizar el proceso de agregar un valor del Registro relacionado con el uso de cifrado seguro. Reinicie manualmente el servicio Windows Server Update Services y el servicio World Wide Web Publishing después de agregar el valor del Registro.

    reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /V SchUseStrongCrypto /T REG_DWORD /D 1
    
  • Ejecute este script de PowerShell para automatizar el proceso de agregar un valor del Registro relacionado con el uso de cifrado seguro y reiniciar el servicio Windows Server Update Services y el servicio World Wide Web Publishing:

    $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
    
  • La actividad o los errores relacionados con la importación de actualizaciones se pueden encontrar en %ProgramFiles%\Update Services\LogFiles\SoftwareDistribution.log del servidor WSUS donde se importan las actualizaciones.