WSUS et le catalogue Microsoft Update

S’applique à : Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012

Le catalogue Microsoft Update est un service qui fournit une liste des mises à jour qui peuvent être distribuées sur un réseau d’entreprise. Vous pouvez utiliser le catalogue pour trouver des informations sur les mises à jour logicielles, les pilotes et les correctifs logiciels Microsoft. WSUS inclut actuellement une option permettant d’importer Mises à jour à partir du catalogue Microsoft Update. Toutefois, l’action Importer des mises à jour dans WSUS a été créée à l’aide d’ActiveX, qui est désormais déconseillée. Cette fonctionnalité d’importation dans WSUS a été remplacée par un script PowerShell. Le script vous permet d’importer une mise à jour unique ou plusieurs mises à jour dans WSUS. Cet article fournit des informations sur le catalogue, le script d’importation et la façon d’utiliser le script.

Conditions préalables pour l’importation de mises à jour dans WSUS

Les conditions préalables suivantes sont requises pour importer des mises à jour dans WSUS avec le script PowerShell :

  • Tout ordinateur sur lequel la console administrative WSUS est installée, qu’il s’agisse ou non d’un serveur WSUS, peut être utilisé pour importer des mises à jour.
    • Lors de l’importation à partir d’un serveur WSUS, utilisez un compte membre du groupe Administrateurs WSUS ou du groupe Administrateurs locaux.
    • Lors de l’importation à partir d’un ordinateur distant, utilisez un compte membre du groupe Administrateurs WSUS et disposez d’autorisations d’administration sur l’ordinateur local. Les ordinateurs distants doivent être en mesure d’atteindre le serveur WSUS sur le réseau.

Le catalogue Microsoft Update

Le catalogue Microsoft Update vous permet de rechercher sur différents champs et catégories de mise à jour. Ces champs de mise à jour sont les suivants :

  • Mettre à jour le titre
  • Description
  • Produits applicables
  • Classifications
  • Numéros d’articles de la base de connaissances au format de KB1234567

Lorsque vous recherchez des mises à jour matérielles ou des pilotes, vous pouvez également rechercher les champs suivants :

  • Modèle de pilote
  • Fabricant
  • Classe
  • ID matériel en quatre parties, tel que PCI\VEN_14E4&DEV_1677&SUBSYS_01AD1028.

Vous pouvez limiter l’étendue de votre recherche en ajoutant des termes de recherche supplémentaires. Pour rechercher une chaîne spécifique, utilisez des guillemets doubles.

Remarque

Le catalogue vous permet également de télécharger les mises à jour directement à partir du site à l’aide du bouton de téléchargement. Toutefois, les mises à jour téléchargées de cette façon sont au .MSU format. WSUS ne peut pas importer de mises à jour au .MSU format. Ce type de fichier est couramment utilisé par le programme d’installation autonome Windows Update, DISMou d’autres outils de mise à jour. Certains outils nécessitent que vous extrayiez les fichiers de .MSU avant qu’ils ne puissent être utilisés.

Importer des mises à jour dans WSUS à l’aide de PowerShell

Utilisez les instructions ci-dessous pour importer des mises à jour dans WSUS :

  1. Copiez le script PowerShell pour importer des mises à jour dans WSUS à partir de cet article dans un éditeur de texte et enregistrez-le en tant que ImportUpdateToWSUS.ps1. Utilisez un emplacement auquel vous pouvez facilement accéder, par exemple C:\temp.

  2. Ouvrez le catalogue Microsoft Update, https://catalog.update.microsoft.com, dans un navigateur.

  3. Recherchez une mise à jour que vous souhaitez importer dans WSUS.

  4. Dans la liste retournée, sélectionnez la mise à jour que vous souhaitez importer dans WSUS. La page détails de la mise à jour s’ouvre.

  5. Utilisez le bouton Copier sur la page de détails de mise à jour pour copier le UpdateID.

  6. Le script peut être utilisé pour importer une mise à jour unique ou plusieurs mises à jour.

    • Pour importer plusieurs mises à jour dans WSUS, collez les ID de mise à jour pour chaque mise à jour que vous souhaitez importer dans un fichier texte. Répertoriez un ID de mise à jour par ligne, puis enregistrez le fichier texte lorsque vous avez terminé. Utilisez un emplacement auquel vous pouvez facilement accéder, par exemple C:\temp\UpdateIDs.txt.
    • Pour importer une seule mise à jour, vous devez uniquement copier l’ID de mise à jour unique.
  7. Pour importer des mises à jour, ouvrez une console PowerShell en tant qu’administrateur et exécutez le script avec la syntaxe suivante à l’aide des paramètres nécessaires :

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

    Exemple 1: connecté à un serveur WSUS qui utilise le port par défaut, importez une mise à jour unique à l’aide de la syntaxe suivante :

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

    Exemple 2: à l’aide d’un ordinateur distant, importez plusieurs mises à jour dans un serveur WSUS à l’aide de SSL avec la syntaxe suivante :

    .\ImportUpdateToWSUS.ps1 -WsusServer WSUSServer.contoso.com -PortNumber 8531 -UseSsl -UpdateIdFilePath C:\temp\UpdateIDs.txt
    
  8. Les fichiers de mise à jour pour les mises à jour importées sont téléchargés en fonction de vos paramètres fichiers de mise à jour. Par exemple, si vous utilisez l’option pour Télécharger les fichiers de mise à jour vers ce server uniquement lorsque les mises à jour sont approuvées, les fichiers de mise à jour sont téléchargés lorsque la mise à jour est approuvée. Pour plus d’informations sur les options de stockage des mises à jour, consultez la section 1.3 Choisir une stratégie de stockage WSUS.

Script PowerShell pour importer des mises à jour dans 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. $_"
    }
}

Paramètres de script

wsusServer: <chaîne>
Spécifie le nom d’un serveur WSUS. S’il n’est pas spécifié, le script se connecte à localhost.

  • Obligatoire : false
  • Valeur par défaut: localhost

Numéro de port: <Int32>
Spécifie le numéro de port à utiliser pour communiquer avec le serveur WSUS en amont.

  • Obligatoire : false
  • Valeur par défaut: 8530
  • Valeurs autorisées: 80, 443, 8530, 8531

UseSsl: <commutateur>
Spécifie si SSL (Secure Sockets Layer) via HTTPS doit être utilisé pour communiquer avec le serveur WSUS. Si ce nom de paramètre est présent, les tests de paramètres $true et que la connexion est établie au serveur WSUS à l’aide de SSL, sinon, false. Lorsque vous utilisez le paramètre USeSSL , définissez le numéro de port sur 443 ou 8531.

  • Obligatoire : false

UpdateId: <chaîne>
Spécifie l’ID de mise à jour que vous souhaitez importer dans WSUS. Ce paramètre est requis si vous importez une mise à jour unique. UpdateId ne peut pas être utilisé avec updateIdFilePath.

  • Obligatoire : true, lors de l’importation d’un id de mise à jour unique spécifié en tant que paramètre de script

UpdateIdFilePath: <chaîne>
Spécifie le chemin d’accès à un fichier texte contenant une liste d’ID de mise à jour sur chaque ligne. Ce paramètre est requis si vous importez plusieurs mises à jour. UpdateIdFilePath ne peut pas être utilisé avec UpdateId.

  • Obligatoire : true, lors de l’utilisation d’un fichier texte pour importer plusieurs mises à jour

CommonParameters:
verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable et OutVariable. Pour plus d’informations, consultez about_CommonParameters

Restriction de l’accès aux correctifs logiciels

Les administrateurs WSUS peuvent envisager de restreindre l’accès aux correctifs logiciels qu’ils ont téléchargés à partir du catalogue Microsoft Update. Pour restreindre les correctifs logiciels disponibles, procédez comme suit :

  1. Démarrez la console du Gestionnaire des services Internet (IIS).
  2. Accédez au nœud Contenu sous le site web Administration de WSUS.
  3. Dans le volet Accueil du contenu, double-cliquez sur l’option Authentification.
  4. Sélectionnez Authentification anonyme, puis Désactiver dans le volet Actions à droite.
  5. Sélectionnez Authentification Windows, puis sélectionnez Activer dans le volet Actions à droite.
  6. Dans la console d’administration WSUS, créez un groupe cible WSUS pour les ordinateurs qui ont besoin du correctif logiciel et ajoutez-les au groupe. Pour plus d’informations sur les ordinateurs et les groupes, consultez Gestion des ordinateurs clients WSUS et des groupes d’ordinateurs WSUS dans ce guide et Configurer des groupes d’ordinateurs WSUS dans le guide de déploiement WSUS.
  7. Téléchargez les fichiers du correctif logiciel.
  8. Définissez les autorisations de ces fichiers afin que seuls les comptes d’ordinateur de ces machines puissent les lire. Vous devez également autoriser le compte de service réseau à accéder entièrement aux fichiers.
  9. Approuvez le correctif logiciel pour le groupe cible WSUS créé à l’étape 2.

Remarque

Vous pouvez supprimer les mises à jour importées du catalogue Microsoft Update définies comme non approuvées ou refusées en exécutant l’Assistant Nettoyage du serveur WSUS. Vous pouvez réimporter les mises à jour qui ont été précédemment supprimées de vos systèmes WSUS.

Importation de mises à jour dans différentes langues

Le catalogue inclut des mises à jour qui prennent en charge plusieurs langues.

Important

Faites correspondre les langues prises en charge par le serveur WSUS aux langues prises en charge par les mises à jour importées.

Si le serveur WSUS ne prend pas en charge toutes les langues incluses dans la mise à jour, la mise à jour n’est pas déployée sur les ordinateurs clients. Si une mise à jour prenant en charge plusieurs langues a été téléchargée sur le serveur WSUS, mais pas encore déployée sur les ordinateurs clients, et qu’un administrateur désélectionne l’une des langues incluses dans la mise à jour, la mise à jour n’est pas déployée sur les clients.