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 Administrators 그룹 또는 로컬 Administrators 그룹의 구성원인 계정을 사용합니다.
- 원격 컴퓨터에서 업데이트를 가져올 때는 WSUS Administrators 그룹의 구성원이면서 로컬 컴퓨터에 관리자 권한이 있는 계정을 사용합니다. 원격 컴퓨터는 네트워크를 통해 WSUS 서버에 연결할 수 있어야 합니다.
Microsoft 업데이트 카탈로그
Microsoft 업데이트 카탈로그를 사용하면 다양한 업데이트 필드 및 범주를 검색할 수 있습니다. 이러한 업데이트 필드에는 다음이 포함됩니다.
- 업데이트 제목
- 설명
- 적용 가능한 제품
- 분류
KB1234567
형식의 기술 자료 문서 번호
하드웨어 업데이트 또는 드라이버를 검색할 때 다음 필드를 검색할 수도 있습니다.
- 드라이버 모델
- 제조업체
- 클래스
- 네 부분으로 구성된 하드웨어 ID(예:
PCI\VEN_14E4&DEV_1677&SUBSYS_01AD1028
.)
추가 검색어를 추가하여 검색 범위를 좁힐 수 있습니다. 특정 문자열을 검색하려면 큰따옴표를 사용합니다.
참고 항목
또한 카탈로그를 사용하면 다운로드 단추를 사용하여 사이트에서 직접 업데이트를 다운로드할 수 있습니다. 그러나 이러한 방식으로 다운로드된 업데이트는 .MSU
의 형식을 가집니다. WSUS는 .MSU
형식의 업데이트를 가져올 수 없습니다. 이 파일 형식은 일반적으로 Windows 업데이트 독립 실행형 설치 관리자, DISM 또는 기타 업데이트 도구에서 사용됩니다. 일부 도구에서는 .MSU
에 있는 파일을 사용하기 전에 추출해야 합니다.
PowerShell을 사용하여 WSUS로 업데이트 가져오기
아래 지침을 사용하여 WSUS로 업데이트를 가져옵니다.
이 문서에 있는 WSUS로 업데이트를 가져오는 PowerShell 스크립트를 텍스트 편집기에 복사한 후
ImportUpdateToWSUS.ps1
으로 저장합니다.C:\temp
와 같이 쉽게 액세스할 수 있는 위치를 사용합니다.브라우저에서 Microsoft 업데이트 카탈로그(https://catalog.update.microsoft.com)를 엽니다.
WSUS로 가져올 업데이트를 검색합니다.
반환된 목록에서 WSUS로 가져올 업데이트를 선택합니다. 업데이트 세부 정보 페이지가 열립니다.
업데이트 세부 정보 페이지의 복사 버튼을 사용하여 UpdateID를 복사합니다.
스크립트를 사용하여 단일 업데이트 또는 여러 업데이트를 가져올 수 있습니다.
- 여러 업데이트를 WSUS로 가져오려면 가져올 각 업데이트에 대한 updateID를 텍스트 파일에 붙여 넣습니다. 줄 당 하나의 업데이트 ID를 나열한 다음 완료되면 텍스트 파일을 저장합니다.
C:\temp\UpdateIDs.txt
와 같이 쉽게 액세스할 수 있는 위치를 사용합니다. - 단일 업데이트를 가져오려면 단일 updateID만 복사하면 됩니다.
- 여러 업데이트를 WSUS로 가져오려면 가져올 각 업데이트에 대한 updateID를 텍스트 파일에 붙여 넣습니다. 줄 당 하나의 업데이트 ID를 나열한 다음 완료되면 텍스트 파일을 저장합니다.
업데이트를 가져오려면 관리자 권한으로 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
가져온 업데이트에 대한 업데이트 파일은 업데이트 파일 설정에 따라 다운로드됩니다. 예를 들어, 업데이트가 승인될 때만 이 서버에 업데이트 파일 다운로드 옵션을 사용하는 경우, 업데이트 파일은 업데이트가 승인될 때 다운로드됩니다. 업데이트 저장 옵션에 대한 자세한 내용은 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>
WSUS 서버와의 통신에 HTTPS를 통한 Secure Sockets Layer(SSL)를 사용할지 여부를 지정합니다. 이 매개 변수 이름이 있으면 매개 변수 테스트 $true
가 표시되고 SSL을 사용하여 WSUS 서버에 연결됩니다. 그렇지 않으면 false
가 표시됩니다. USeSSL 매개 변수를 사용하는 경우 PortNumber는 443 또는 8531로 설정합니다.
- 필수: false
UpdateId: <문자열>
WSUS로 가져올 업데이트 ID를 지정합니다. 단일 업데이트를 가져오는 경우 이 매개 변수가 필요합니다. UpdateId는 UpdateIdFilePath와 사용할 수 없습니다.
- 필수: true(스크립트 매개 변수로 지정된 단일 updateID를 가져올 때)
UpdateIdFilePath: <문자열>
각 줄에 업데이트 ID 목록이 포함된 텍스트 파일의 경로를 지정합니다. 여러 업데이트를 가져오는 경우 이 매개 변수가 필요합니다. UpdateIdFilePath는 UpdateId와 사용할 수 없습니다.
- 필수: true(텍스트 파일을 사용하여 여러 업데이트를 가져오는 경우)
CommonParameters:
Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable, 및 OutVariable. 자세한 내용은 공통 매개 변수(CommonParameter)에 대한 정보를 참조하세요.
핫픽스에 대 한 액세스 제한
WSUS 관리자는 Microsoft 업데이트 카탈로그에서 다운로드한 핫픽스에 대한 액세스를 제한하는 것을 고려할 수 있습니다. 사용 가능한 핫픽스를 제한하려면 다음 단계를 완료하세요.
- 인터넷 정보 서비스(IIS) 관리자 콘솔을 시작합니다.
- WSUS 관리 웹 사이트의 내용 노드로 이동합니다.
- 내용 홈 창에서 인증 옵션을 더블클릭합니다.
- 익명 인증을 선택하고 오른쪽의 작업 창에서 비활성화를 선택합니다.
- Windows 인증을 선택하고 오른쪽의 작업 창에서 활성화를 선택합니다.
- WSUS 관리 콘솔에서 핫픽스가 필요한 컴퓨터에 대한 WSUS 대상 그룹을 만들고, 해당 컴퓨터들을 그룹에 추가합니다. 컴퓨터 및 그룹에 대한 자세한 내용은 이 가이드의 WSUS 클라이언트 컴퓨터 및 WSUS 컴퓨터 그룹 관리와 WSUS 배포 가이드의 WSUS 컴퓨터 그룹 구성을 참조하세요.
- 핫픽스 파일을 다운로드 합니다.
- 이러한 컴퓨터의 컴퓨터 계정에만 읽을 수 있도록 이러한 파일의 사용 권한을 설정 합니다. 또한 네트워크 서비스 계정에 파일에 대한 모든 권한을 허용해야 합니다.
- 2 단계에서에서 만든 WSUS 대상 그룹에 대 한 핫픽스를 승인 합니다.
참고 항목
Microsoft 업데이트 카탈로그에서 가져온 업데이트가 승인되지 않음 또는 거부됨으로 설정된 경우, WSUS 서버 정리 마법사를 실행하여 해당 업데이트를 제거할 수 있습니다. WSUS 시스템에서 이전에 제거된 업데이트를 다시 가져올 수 있습니다.
다른 언어의 업데이트 가져오기
카탈로그에는 여러 언어를 지원하는 업데이트가 포함되어 있습니다.
Important
WSUS 서버에서 지원하는 언어와 가져온 업데이트에서 지원하는 언어를 일치시킵니다.
WSUS 서버가 업데이트에 포함된 모든 언어를 지원하지 않으면, 해당 업데이트는 클라이언트 컴퓨터에 배포되지 않습니다. 여러 언어를 지원하는 업데이트가 WSUS 서버에 다운로드 되었으나 아직 클라이언트 컴퓨터에 배포되지 않은 상태에서 관리자가 해당 업데이트에 포함된 언어 중 하나를 선택 해제하면, 업데이트는 클라이언트에 배포되지 않습니다.