WindowsUpdate未適用リストについて、下記サイトを参考にリストを作成する。
また、パッチのダウンロードも一括で取得でき、更新プログラムのスキャンも可能。
※ダウンロードURLがx64が必要なのにx86になっていることがあるため別途x64でダウンロードする。
※MBSAはWindows Server 2016以降対応しなくなった。
\\nfs\common\3.システム導入・保守・運用\078.WH構成表システム\3-2 システム保守\3-2-3 サービスデスク\08.構成表開発チーム\050_WHツール\MBSA
wsusscn2.cabを最新にした後に「01_MBSA の一括セットアップ.bat」を実施するか、「%USERPROFILE%\AppData\Local\Microsoft\MBSA\Cache」フォルダにコピーする。
Windows Server 2016以降はこっちを使用する。
* [Windows10]MBSAが終了しているようなので後継スクリプトを試してみた 〜オフラインPCのパッチ適用状況の確認〜
※wsusscn2.cabだけは、常に最新のカタログを下記サイトからダウンロードすること
http://go.microsoft.com/fwlink/?LinkId=76054
「wsusscn2.cab」は毎月リリースされるセキュリティ関連の更新プログラムに関する情報が含まれているファイルです。この情報から足りないセキュリティパッチを洗い出してくれます。
wsusscn2.cabを最新にした後に「StartScanWUA.bat」を実施する必要がある。
WindowsUpdate未適用リストとして「ScanWUAResult.txt」が出力される。
---WindowsUpdate未適用リスト--- 1> 2022-05 .NET 5.0.17 Security Update for x64 Server (KB5014329) 重要度:Important サポートURL:https://go.microsoft.com/fwlink/?linkid=2147044&clcid=0x409 MicrosoftUpdateカタログ:https://www.catalog.update.microsoft.com/Search.aspx?q=KB5014329 2> 悪意のあるソフトウェアの削除ツール x64 - v5.104 (KB890830) 重要度: サポートURL:http://support.microsoft.com MicrosoftUpdateカタログ:https://www.catalog.update.microsoft.com/Search.aspx?q=KB890830 3> 2022-08x64 ベース システム用 Windows Server 2016 サービス スタック更新プログラム (KB5017095) 重要度:Critical サポートURL:https://support.microsoft.com/help/5017095 MicrosoftUpdateカタログ:https://www.catalog.update.microsoft.com/Search.aspx?q=KB5017095 4> 2022-08 x64 ベース システム用 Windows Server 2016 の累積更新プログラム (KB5016622) 重要度:Critical サポートURL:https://support.microsoft.com/help/5016622 MicrosoftUpdateカタログ:https://www.catalog.update.microsoft.com/Search.aspx?q=KB5016622 ---ここまで---
Microsoft®Update カタログからWindows Server 2016の対象KBをダウンロードする。.NET 5.0系は除外する
https://www.catalog.update.microsoft.com/Home.aspx
サービススタック更新プログラム(Servicing Stack Updates(SSU))をインストールすると、オペレーティングシステムが最新の累積更新プログラムを受信できるようになります。サービススタック更新プログラムが欠落している場合、誤った検出結果を受け取る可能性があります。
サービススタック更新プログラムを当てないと、新規の累積更新プログラムが検出対象外となる。
※セキュリティパッチの更新調査をする上で、先にサービススタック更新プログラムだけは更新させた上で再度検出する。そうしないと累積更新プログラムが検出されない
サービススタック更新プログラムは、コントロールパネルのプログラムと機能にある「インスールされた更新プログラム」上では、「セキュリティ更新プログラム」という名前で表示される。
KB番号によっては、新しいKB番号に内包されてしまっており、既にwsusscn2.cab内から除外されていると思われる。その為、スキャン結果でインスール済として出て来ない。
2021年8月のwsusscn2.cabのサイズが850MB、2022年8月のサイズが645MBで少なくなっていることから古いものは除外してしまっている。
Microsoft Update は「重要な更新」および「追加で選択できる更新プログラム」など、セキュリティ以外の更新プログラムもユーザーに提供します。MBSA は、これらのセキュリティ以外の更新プログラムを提供しません。よってWindowsUpdateのファイル数が少ない
上位互換となるKBがでてそちらが先に当たり、後続がインストールできない(インストール不要)といったことはあります。
WindowsUpdateのオフライン適用について(WindowServer 2012 R2)
AddScanPackageService(“Offline Sync Service” でエラーになるのは、Windows Updateサービスが無効になっているため
Wusa.exe等に「/quiet /norestart」オプションによりコンピューターが再起動されないようにしている。
Windows の Windows Update スタンドアロン インストーラーについて
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/bb294979(v=vs.85)
値 | 項目名 | 説明 |
---|---|---|
4 | Critical 致命的 | このアップデートは、その悪用によりユーザーの操作なしにインターネットワームの伝播を可能にする可能性がある脆弱性を修正します。 |
3 | Important 重要 | この更新プログラムは、悪用によりユーザーのデータの機密性、整合性、可用性、または処理リソースの整合性や可用性が損なわれる可能性がある脆弱性を修正します。 |
2 | Moderate 適度 | この更新プログラムは、デフォルトの構成、監査、または悪用の難しさなどの要因によって悪用が大幅に軽減される脆弱性を修正します。 |
1 | Low 低い | このアップデートにより、悪用が非常に困難な脆弱性、または影響が最小限の脆弱性が修正されます。 |
0 | Unspecified 詳細不明 | アップデートには重大度の評価はありません。 |
「累積的な」と書かれている更新プログラムには、同じ製品に対する過去の全ての更新プログラムの修正内容が含まれています。
例外がある場合は、サポート技術情報やセキュリティ情報で明示されます。
サービスパックの上位を適用したなら下位のパッチの適用は不要となる。
ただ、サービスパックの上位を適用したことで新規のパッチが出現する場合がある。
例えば、SQLServer 2014 SP3がまだ未適用の場合にSP2用のパッチがあったとしても、サービスパックのSP3を適用すればSP2用のパッチは適用する必要がない。SP3になったことでSP3用のパッチが出現する。
Windows Update error code list
エラー10進 | エラー16進 | エラー内容 |
---|---|---|
0 | 0 | 正常 |
740 | 2E4 | 実行するには管理者権限に昇格する必要がある |
1603 | 643 | インストール時の致命的なエラー |
1642 | 66A | .NET Framwork 4のインストールまたはアップデートに失敗した時に発生する。 |
3010 | BC2 | 再起動が必要 ※インストールは行われる |
4096 | 1000 | ライセンス認証の同意が必要なので、ウィザード形式でインストールする。 |
2359302 | 240006 | インストールする更新は既にインストールされています。 |
-2145124329 | 80240017 | 該当する更新がないため、インストールは不要です。 |
-2068578301 | 84B40003 | SQLServer2008のアップデートに失敗した時に発生する。 |
-2146885628 | 80092004 | 原因不明 |
-2146498302 | 800F0902 | 原因不明 |
エラー | エラー内容 |
---|---|
14005 | マニフェスト ファイルに、1 つ以上の構文エラーが含まれています。 |
@echo OFF cd /d %~dp0 wmic qfe > updatelist.txt exit /b
予め年毎またはIEや.NETなどのシステム単位にパッチを分けてフォルダに格納しておく。
@echo OFF cd /d %~dp0 SETLOCAL enabledelayedexpansion SET LOG=%cd%\PACHLOG.log SET ERRLOG=%cd%\ERRLOG.log SET returnCode= rem パッチ適用開始 echo パッチ適用開始:%date% %time% >>%LOG% rem 2013年分パッチ適用 call :subPatch 2013 rem 2014年分パッチ適用 call :subPatch 2014 rem 2015年分パッチ適用 call :subPatch 2015 rem 2016年分パッチ適用 call :subPatch 2016 rem 2017年分パッチ適用 call :subPatch 2017 rem パッチ適用完了 echo パッチ適用完了:%date% %time% >>%LOG% echo サーバーの再起動をしてから、パッチ一括リトライ適用.batを実行してください >>%LOG% rem pause ENDLOCAL exit :subPatch CD %1 SET PachDir=%CD% for %%i in (%PachDir%\*.msu) do ( echo 適用バッチ:%%i echo パッチ実行:%%i >>%LOG% SET fileN=%%i C:\Windows\System32\wusa.exe !fileN! /quiet /Norestart echo 実行結果:!ERRORLEVEL! !fileN! >>%LOG% ) for %%i in (%PachDir%\*.exe) do ( echo 適用バッチ:%%i echo パッチ実行:%%i >>%LOG% SET fileN=%%i !fileN! /quiet /Norestart echo 実行結果:!ERRORLEVEL! !fileN! >>%LOG% ) for %%i in (%PachDir%\*.msi) do ( echo 適用バッチ:%%i echo パッチ実行:%%i >>%LOG% SET fileN=%%i C:\Windows\System32\msiexec /i !fileN! echo 実行結果:!ERRORLEVEL! !fileN! >>%LOG% ) for %%i in (%PachDir%\*.cab) do ( echo 適用バッチ:%%i echo パッチ実行:%%i >>%LOG% SET fileN=%%i C:\Windows\System32\dism /online /add-package=!fileN! /Norestart echo 実行結果:!ERRORLEVEL! !fileN! >>%LOG% ) CD .. exit /b
■.msu forfiles /p . /m *.msu /c "cmd /c wusa @path /quiet /norestart" ■.exe forfiles /p . /m *.exe /c "cmd /c @path /quiet /norestart" ■.msi forfiles /p . /m *.msi /c "cmd /c msiexec @path /i" ■.cab forfiles /p . /m *.cab /c "cmd /c dism /online /add-package=@path /norestart"
SQL Serverがすでにインストールされているか確認するには?
REM ----- SQLServer2008のレジストリを参照 call :DetectSQL "%RemoteName%HKLM\SOFTWARE\Microsoft\Microsoft SQL Server" if %returnCode%==1 ( REM ----- SQL Server 2008のパッチ適用 call :subPatch SQLServer2008 ) REM ------------------------------------------------- REM ----- SQL Sever の検出 REM ------------------------------------------------- :DetectSQL REM ----- インストールの確認 echo. echo SQL Severのインストール確認 reg query "%~1" >nul set sql=%errorlevel% echo %sql% if %sql%==1 ( echo. echo SQL Sever 2008未インストール set returnCode=1 ) else ( echo. echo SQL Sever 2008インストール済み set returnCode=2 ) exit /b
REM ----- .NET Frameworkのレジストリを参照 SET RegKey11=%RemoteName%HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP REM ----- .NET Framework4.0/4.5の確認 call :Detect11_4 ".NET Framework 4" "%RegKey11%\v4" if %returnCode%==1 ( REM ----- .NET Framework4.xのパッチ適用 call :subPatch NET4 ) REM ------------------------------------------------- REM ----- .NET Framework 4.x の検出 REM ------------------------------------------------- :Detect11_4 REM ----- インストールの確認 echo. echo NET Framework4.xのインストール確認 reg query "%~2\Full" /v "Install" 2>nul | find /I "Install" 2>nul | find /I "0x1" 1>nul 2>nul set nf4=%errorlevel% echo %nf4% if %nf4%==1 ( echo. echo NETFramework4/4.5未インストール set returnCode=1 ) else ( echo. echo NET Framework4/4.5インストール済み set returnCode=2 ) exit /b