適用対象: Windows Server 2025、Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012
Microsoft Update Catalog は、企業ネットワーク経由で配布できる更新プログラムの一覧を提供するサービスです。 このカタログを使用して、Microsoft ソフトウェアの更新プログラム、ドライバー、修正プログラムに関する情報を見つけることができます。 WSUS には現在、Microsoft Update カタログから 更新プログラムをインポート するオプションが含まれています。 ただし、WSUS の [更新プログラムのインポート] アクションは ActiveX を使用して構築されましたが、現在は非推奨となっています。 WSUS 内のこのインポート機能は、PowerShell スクリプトに置き換えられました。 このスクリプトを使用すると、1 つの更新プログラムまたは複数の更新プログラムを WSUS にインポートできます。 この記事では、カタログ、インポート スクリプト、およびスクリプトの使用方法に関する情報を提供します。
WSUS に更新プログラムをインポートするための前提条件
PowerShell スクリプトを使用して WSUS に更新プログラムをインポートするには、次の前提条件が必要です。
- WSUS 管理コンソールがインストールされているコンピューターは、WSUS サーバーであるかどうかに関係なく、更新プログラムのインポートに使用できます。
- WSUS サーバーからインポートする場合は、WSUS Administrators グループまたはローカル管理者グループのメンバーであるアカウントを使用します。
- リモート コンピューターからインポートする場合は、WSUS Administrators グループのメンバーであり、ローカル コンピューターに対する管理アクセス許可を持つアカウントを使用します。 リモート コンピューターは、ネットワーク経由で WSUS サーバーに接続できる必要があります。
Microsoft Update カタログ
Microsoft Update カタログでは、さまざまな更新フィールドとカテゴリを検索できます。 これらの更新フィールドは次のとおりです。
- タイトルを更新する
- 説明
- 該当する製品
- 分類
- ナレッジベース記事の番号は、次の形式で示されます。
KB1234567
ハードウェア更新プログラムまたはドライバーを検索する場合は、次のフィールドを検索することもできます。
- ドライバー モデル
- 生産者
- クラス
PCI\VEN_14E4&DEV_1677&SUBSYS_01AD1028
などの 4 部構成のハードウェア ID。
検索語句を追加することで、検索範囲を絞り込むことができます。 特定の文字列を検索するには、二重引用符を使用します。
注
カタログでは、ダウンロード ボタンを使用してサイトから直接更新プログラムをダウンロードすることもできます。 ただし、この方法でダウンロードされた更新プログラムは .MSU
形式です。 WSUS は、 .MSU
形式で更新プログラムをインポートできません。 このファイルの種類は、 Windows Update スタンドアロン インストーラー、 DISM、またはその他の更新ツールでよく使用されます。 一部のツールでは、使用する前に .MSU
からファイルを抽出する必要があります。
PowerShell を使用して WSUS に更新プログラムをインポートする
WSUS に更新プログラムをインポートするには、次の手順に従います。
PowerShell スクリプトをコピーして、この記事の WSUS に更新プログラムをテキスト エディターにインポートし、
ImportUpdateToWSUS.ps1
として保存します。C:\temp
など、簡単にアクセスできる場所を使用します。ブラウザーで Microsoft Update カタログ ( https://catalog.update.microsoft.com) を開きます。
WSUS にインポートする更新プログラムを検索します。
返された一覧から、WSUS にインポートする更新プログラムを選択します。 更新プログラムの詳細ページが開きます。
UpdateID をコピーするには、更新プログラムの詳細ページの [コピー] ボタンを使用します。
スクリプトを使用して、1 つの更新プログラムまたは複数の更新プログラムをインポートできます。
- WSUS に複数の更新プログラムをインポートするには、インポートする更新プログラムごとに updateID をテキスト ファイルに貼り付けます。 1 行に 1 つの更新 ID を一覧表示し、完了したらテキスト ファイルを保存します。
C:\temp\UpdateIDs.txt
など、簡単にアクセスできる場所を使用します。 - 1 つの更新プログラムをインポートするには、1 つの updateID のみをコピーする必要があります。
- WSUS に複数の更新プログラムをインポートするには、インポートする更新プログラムごとに updateID をテキスト ファイルに貼り付けます。 1 行に 1 つの更新 ID を一覧表示し、完了したらテキスト ファイルを保存します。
更新プログラムをインポートするには、管理者として PowerShell コンソールを開き、必要な パラメーターを使用して次の構文でスクリプトを実行します。
C:\temp\ImportUpdateToWSUS.ps1 [-WsusServer] <String> [-PortNumber] <Int32> [-UseSsl] [-UpdateId] <String> [-UpdateIdFilePath] <string> [<CommonParameters>]
例 1: 既定のポートを使用する WSUS サーバーにサインインしているときに、次の構文を使用して 1 つの更新プログラムをインポートします。
.\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: <string>
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: <string>
WSUS にインポートする更新プログラム ID を指定します。 このパラメーターは、1 つの更新プログラムをインポートする場合に必要です。 UpdateIdは UpdateIdFilePath では使用できません。
- 必須: true、スクリプト パラメーターとして指定された単一の updateID をインポートする場合
UpdateIdFilePath: <string>
各行の更新 ID の一覧を含むテキスト ファイルへのパスを指定します。 このパラメーターは、複数の更新プログラムをインポートする場合に必要です。 UpdateIdFilePath を UpdateId と共に使用することはできません。
- 必須: true、テキスト ファイルを使用して複数の更新プログラムをインポートする場合
CommonParameters:
Verbose、Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、OutBuffer、PipelineVariable、OutVariable。 詳細については、「CommonParameters について」を参照してください。
修正プログラムへのアクセスの制限
WSUS 管理者は、Microsoft Update カタログからダウンロードした修正プログラムへのアクセスを制限することを検討できます。 使用可能な修正プログラムを制限するには、次の手順を実行します。
- インターネット インフォメーション サービス (IIS) マネージャー コンソールを起動します。
- WSUS 管理 Web サイトの [コンテンツ] ノードに移動します。
- [ コンテンツ ホーム ] ウィンドウで、[ 認証 ] オプションをダブルクリックします。
- [匿名認証] を選択し、右側の [操作] ウィンドウで [無効] を選択します。
- [Windows 認証] を選択し、右側の [操作] ウィンドウで [有効] を選択します。
- WSUS 管理コンソールで、修正プログラムを必要とするコンピューターの WSUS ターゲット グループを作成し、グループに追加します。 コンピューターとグループの詳細については、このガイドの 「WSUS クライアント コンピューターと WSUS コンピューター グループの管理 」および WSUS 展開ガイドの 「WSUS コンピューター グループの構成 」を参照してください。
- 修正プログラムのファイルをダウンロードします。
- これらのファイルのアクセス許可を設定して、それらのマシンのマシン アカウントのみがそれらのファイルを読み取ることができるようにします。 また、ネットワーク サービス アカウントにファイルへのフル アクセスを許可する必要もあります。
- 手順 2 で作成した WSUS ターゲット グループの修正プログラムを承認します。
注
WSUS サーバー クリーンアップ ウィザードを実行すると、未 承認 または拒否として設定されている Microsoft Update カタログからインポート された更新プログラムを削除できます。 WSUS システムから以前に削除された更新プログラムを再インポートできます。
異なる言語での更新プログラムのインポート
カタログには、複数の言語をサポートする更新プログラムが含まれています。
重要
WSUS サーバーでサポートされている言語と、インポートされた更新プログラムでサポートされている言語を一致させます。
WSUS サーバーが更新プログラムに含まれるすべての言語をサポートしていない場合、更新プログラムはクライアント コンピューターに展開されません。 複数の言語をサポートする更新プログラムが WSUS サーバーにダウンロードされているが、まだクライアント コンピューターに展開されておらず、管理者が更新プログラムに含まれる言語の 1 つを選択解除した場合、更新プログラムはクライアントに展開されません。
トラブルシューティング
スクリプトの ".NOTES" セクションは、スクリプトを実行する際に発生する可能性がある問題のトラブルシューティングに利用することができます。
エラーが発生した場合は、トランスポート層セキュリティ (TLS) 1.2 を有効にしてみてください。 詳細については、「クライアントで TLS 1.2 を有効にする方法」を参照してください。
次のコマンドを使用して、強力な暗号化の使用に関連するレジストリ値を追加するプロセスを自動化できます。 レジストリ値を追加した後、Windows Server Update Services サービスと World Wide Web 発行サービスを手動で再起動します。
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /V SchUseStrongCrypto /T REG_DWORD /D 1
この PowerShell スクリプトを実行して、強力な暗号化の使用に関連するレジストリ値を追加するプロセスを自動化し、Windows Server Update Services サービスと World Wide Web 発行サービスを再起動します。
$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
更新プログラムのインポートに関連するアクティビティやエラーは、更新プログラムがインポート%ProgramFiles%WSUS サーバーの \Update Services\LogFiles\SoftwareDistribution.log にあります。