WSUS 및 Microsoft 업데이트 카탈로그

적용 대상: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012

Microsoft 업데이트 카탈로그는 회사 네트워크를 통해 배포할 수 있는 업데이트 목록을 제공하는 서비스입니다. 카탈로그를 사용하여 Microsoft 소프트웨어 업데이트, 드라이버 및 핫픽스에 대한 정보를 찾을 수 있습니다. WSUS에는 현재 Microsoft 업데이트 카탈로그에서 업데이트 가져오는 옵션이 포함되어 있습니다. 그러나 WSUS에서 업데이트 가져오기 작업은 이제 사용되지 않는 ActiveX를 사용하여 빌드되었습니다. WSUS 내의 이 가져오기 기능은 PowerShell 스크립트로 대체되었습니다. 스크립트를 사용하면 단일 업데이트 또는 여러 업데이트를 WSUS로 가져올 수 있습니다. 이 문서에서는 카탈로그, 가져오기 스크립트 및 스크립트를 사용하는 방법에 대한 정보를 제공합니다.

WSUS로 업데이트를 가져오기 위한 필수 구성 요소

PowerShell 스크립트를 사용하여 WSUS로 업데이트를 가져오려면 다음 필수 구성 요소가 필요합니다.

  • WSUS 서버인지 여부에 관계없이 WSUS 관리 콘솔이 설치된 모든 컴퓨터를 사용하여 업데이트를 가져올 수 있습니다.
    • WSUS 서버에서 가져올 때 WSUS 관리istrators 그룹 또는 로컬 관리istrators 그룹의 멤버인 계정을 사용합니다.
    • 원격 컴퓨터에서 가져올 때 WSUS 관리istrators 그룹의 구성원이며 로컬 컴퓨터에 대한 관리 권한이 있는 계정을 사용합니다. 원격 컴퓨터는 네트워크를 통해 WSUS 서버에 연결할 수 있어야 합니다.

Microsoft 업데이트 카탈로그

Microsoft 업데이트 카탈로그사용하면 다양한 업데이트 필드 및 범주를 검색할 수 있습니다. 이러한 업데이트 필드는 다음과 같습니다.

  • 제목 업데이트
  • 설명
  • 적용 가능한 제품
  • 분류
  • 기술 자료 문서 번호 형식 KB1234567

하드웨어 업데이트 또는 드라이버를 검색할 때 다음 필드를 검색할 수도 있습니다.

  • 드라이버 모델
  • 제조업체
  • 클래스
  • 4부로 구성된 하드웨어 ID(예: PCI\VEN_14E4&DEV_1677&SUBSYS_01AD1028.)

추가 검색어를 추가하여 검색 범위를 좁힐 수 있습니다. 특정 문자열을 검색하려면 큰따옴표를 사용합니다.

참고 항목

또한 카탈로그를 사용하면 다운로드 단추를 사용하여 사이트에서 직접 업데이트를 다운로드할 수 있습니다. 그러나 이러한 방식으로 다운로드된 업데이트의 형식은 다음과 같습니다 .MSU . WSUS는 업데이트를 형식으로 .MSU 가져올 수 없습니다. 이 파일 형식은 일반적으로 Windows 업데이트 독립 실행형 설치 관리자, DISM 또는 기타 업데이트 도구에서 사용됩니다. 일부 도구에서는 파일을 .MSU 사용하기 전에 추출해야 합니다.

PowerShell을 사용하여 WSUS로 업데이트 가져오기

아래 지침을 사용하여 WSUS로 업데이트를 가져옵니다.

  1. PowerShell 스크립트를 복사하여 이 문서에서 WSUS 로 업데이트를 텍스트 편집기에 가져와서 ImportUpdateToWSUS.ps1저장합니다. 와 같이 C:\temp쉽게 액세스할 수 있는 위치를 사용합니다.

  2. 브라우저에서 Microsoft 업데이트 카탈로그 https://catalog.update.microsoft.com를 엽니다.

  3. WSUS로 가져올 업데이트를 검색합니다.

  4. 반환된 목록에서 WSUS로 가져올 업데이트를 선택합니다. 업데이트 세부 정보 페이지가 열립니다.

  5. 업데이트 세부 정보 페이지의 복사 단추를 사용하여 UpdateID를 복사합니다.

  6. 스크립트를 사용하여 단일 업데이트 또는 여러 업데이트를 가져올 수 있습니다.

    • 여러 업데이트를 WSUS로 가져오려면 가져올 각 업데이트에 대한 updateID를 텍스트 파일에 붙여넣습니다. 줄당 하나의 업데이트 ID를 나열한 다음 완료되면 텍스트 파일을 저장합니다. 와 같이 C:\temp\UpdateIDs.txt쉽게 액세스할 수 있는 위치를 사용합니다.
    • 단일 업데이트를 가져오려면 단일 updateID만 복사하면 됩니다.
  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: 원격 컴퓨터를 사용하여 다음 구문과 함께 SSL을 사용하여 WSUS 서버로 여러 업데이트를 가져옵니다.

    .\ImportUpdateToWSUS.ps1 -WsusServer WSUSServer.contoso.com -PortNumber 8531 -UseSsl -UpdateIdFilePath C:\temp\UpdateIDs.txt
    
  8. 가져온 업데이트에 대한 업데이트 파일은 업데이트 파일 설정에 따라 다운로드됩니다. 예를 들어 업데이트가 승인된 경우에만 이 serer에 업데이트 파일을 다운로드하는 옵션을 사용하는 경우 업데이트가 승인될 때 업데이트 파일이 다운로드됩니다. 업데이트 저장 옵션에 대한 자세한 내용은 섹션 1.3 WSUS 스토리지 전략 선택을 참조하세요.

WSUS로 업데이트를 가져오는 PowerShell 스크립트

<#
.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>
HTTPS를 통한 SSL(Secure Sockets Layer)을 사용하여 WSUS 서버와 통신해야 하는지 여부를 지정합니다. 이 매개 변수 이름이 있으면 매개 변수 테스트 $true 가 표시되고 SSL을 사용하여 WSUS 서버에 연결됩니다. 그렇지 않으면 false. USeSSL 매개 변수를 사용하는 경우 PortNumber를 443 또는 8531로 설정합니다.

  • 필수: false

UpdateId: <문자열>
WSUS로 가져올 업데이트 ID를 지정합니다. 단일 업데이트를 가져오는 경우 이 매개 변수가 필요합니다. UpdateIdFilePath에서는 UpdateId를 사용할 수 없습니다.

  • 필수: true입니다. 스크립트 매개 변수로 지정된 단일 updateID를 가져올 때

UpdateIdFilePath: <문자열>
은 각 줄의 업데이트 ID 목록을 포함하는 텍스트 파일의 경로를 지정합니다. 이 매개 변수는 여러 업데이트를 가져오는 경우에 필요합니다. UpdateIdFilePath는 UpdateId와 함께 사용할 수 없습니다.

  • 필수: true입니다. 텍스트 파일을 사용하여 여러 업데이트를 가져오는 경우

CommonParameters:
자세한 정보 표시, 디버그, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable 및 OutVariable입니다. 자세한 내용은 CommonParameters 정보

핫픽스에 대 한 액세스 제한

WSUS 관리자는 Microsoft 업데이트 카탈로그에서 다운로드한 핫픽스에 대한 액세스를 제한하는 것을 고려할 수 있습니다. 사용 가능한 핫픽스를 제한하려면 다음 단계를 완료합니다.

  1. IIS(인터넷 정보 서비스) 관리자 콘솔을 시작합니다.
  2. WSUS 관리istration 웹 사이트 아래의 콘텐츠 노드로 이동합니다.
  3. 콘텐츠 홈 창에서 인증 옵션을 두 번 클릭합니다.
  4. 익명 인증을 선택하고 오른쪽의 작업 창에서 사용 안 함을 선택합니다.
  5. Windows 인증을 선택하고 오른쪽의 작업 창에서 사용을 선택합니다.
  6. WSUS 관리 콘솔에서 핫픽스가 필요한 컴퓨터에 대한 WSUS 대상 그룹을 만들고 그룹에 추가합니다. 컴퓨터 및 그룹에 대한 자세한 내용은 이 가이드의 WSUS 클라이언트 컴퓨터 및 WSUS 컴퓨터 그룹 관리를 참조하고 WSUS 배포 가이드에서 WSUS 컴퓨터 그룹 구성을 참조하세요.
  7. 핫픽스 파일을 다운로드 합니다.
  8. 이러한 컴퓨터의 컴퓨터 계정에만 읽을 수 있도록 이러한 파일의 사용 권한을 설정 합니다. 또한 네트워크 서비스 계정에서 파일에 대한 모든 액세스 권한을 허용해야 합니다.
  9. 2 단계에서에서 만든 WSUS 대상 그룹에 대 한 핫픽스를 승인 합니다.

참고 항목

WSUS Server 클린up 마법사를 실행하여 승인되지 않음 또는 거부됨으로 설정된 Microsoft 업데이트 카탈로그에서 가져온 업데이트를 제거할 수 있습니다. 이전에 WSUS 시스템에서 제거된 업데이트를 다시 가져올 수 있습니다.

다른 언어의 업데이트 가져오기

카탈로그에는 여러 언어를 지원하는 업데이트가 포함되어 있습니다.

Important

WSUS 서버에서 지원하는 언어를 가져온 업데이트에서 지원하는 언어와 일치합니다.

WSUS 서버가 업데이트에 포함된 모든 언어를 지원하지 않는 경우 업데이트가 클라이언트 컴퓨터에 배포되지 않습니다. 여러 언어를 지원하는 업데이트가 WSUS 서버에 다운로드되었지만 클라이언트 컴퓨터에 아직 배포되지 않은 경우 관리자가 업데이트에 포함된 언어 중 하나를 선택 취소하면 업데이트가 클라이언트에 배포되지 않습니다.