0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

この不親切な手順に救援を 其の4:WUAを使用したオフライン更新プログラムのスキャン

Last updated at Posted at 2024-05-21

WindowsUpdateに不具合が発生した際、
手動更新を行う為の補助手順として

WUA を使用したオフライン更新プログラムのスキャン
https://learn.microsoft.com/ja-jp/windows/win32/wua_sdk/using-wua-to-scan-for-updates-offline?tabs=powershell

が 提示されています。

これは WindowsUpdate を 行うのでは無く
更新プログラムを探すだけのプログラムです。

具体的に何をしろと言うと

① Wsusscn2.cab を ダウンロード
② ダウンロード した Wsusscn2.cab を
  c:\Wsusscn2.cab へ 配置
③ VbScript または PowerShell の
  スクリプト を 実行

サイトの説明だと
プログラムを読めない人には
何をやるのかさっぱりなので
補助をするプログラムと
参照先を変更した
スクリプトを準備しました

準備として
ブラウザは閉じるのでメモ帳に
バッチとスクリプトをコピー
しておいてください

手順として

① 「 ファイル名を指定して実行 」 を 起動
  「ファイル名を指定して実行」を起動.jpg
② 「 ファイル名を指定して実行 」 に 貼る内容 を コピー
  「 ファイル名を指定して実行 」に貼る内容をコピー2.jpg
③ 「 ファイル名を指定して実行 」 に コピーした内容 を 貼り付ける
  「 ファイル名を指定して実行 」に貼る内容を貼り付ける.jpg 
④ 「 ファイル名を指定して実行 」を【 管理者として実行 】
  ③ 貼り付け直後に
   [ Ctrl ] + [ Shift ] + [ Enter ]
⑤ ダウンロードが終了したら、ブラウザを閉じる
  ダウンロードが終了したら、ブラウザを閉じる.jpg
⑥ 「 PowerShell 」 に 貼る内容 を コピー
  「 PowerShell 」に貼る内容をコピー2.jpg
⑦ 「 PowerShell 」 に コピーした内容 を 【 右クリック 】 で 貼り付ける
  ※ [ Ctrl ] + [ V ] だと、最終行の Enter が 効かない
  「 PowerShell 」に内容を貼り付け.jpg


ダウンロードフォルダの Wsusscn2.cab を 削除してから
Wsusscn2.cab を ダウンロード し
PowerShell を 起動する バッチ

「 ファイル名を指定して実行 」に貼り付ける内容
cmd /c,del /f "%USERPROFILE%\Downloads\wsusscn2.cab" & @echo; & @echo; ダウンロード完了後、Edgeを閉じ、起動したPowerShellにスクリプトを貼付 & @echo; & start "" msedge "https://catalog.s.download.windowsupdate.com/microsoftupdate/v6/wsusscan/wsusscn2.cab" & powershell

ダウンロードフォルダにある
Wsusscn2.cab を 参照するようにした PowerShell
終了時にダウンロードフォルダの
Wsusscn2.cab を 削除する スクリプト

「 PowerShell 」に貼り付ける内容
# - + - ここから - + -

$UpdateSession        = New-Object -ComObject Microsoft.Update.Session
$UpdateServiceManager = New-Object -ComObject Microsoft.Update.ServiceManager

$DownloadDirFile      = ($Env:HomeDrive)+"\"+($Env:Public).Split("\")[1]+"\"+((Get-WMIObject -ClassName Win32_ComputerSystem).Username).Split("\")[1]+"\Downloads\wsusscn2.cab"

$UpdateService        = $UpdateServiceManager.AddScanPackageService("Offline Sync Service", "$DownloadDirFile")
$UpdateSearcher       = $UpdateSession.CreateUpdateSearcher()

Write-Host "Searching for updates..."
$UpdateSearcher.ServerSelection = 3 # ssOthers
$UpdateSearcher.ServiceID       = [string] $UpdateService.ServiceID
$SearchResult                   = $UpdateSearcher.Search("IsInstalled=0")
$Updates                        = $SearchResult.Updates
If ($SearchResult.Updates.Count -eq 0) {
    Write-Host "There are no applicable updates."
    Exit
}

Write-Host "List of applicable items on the machine when using wssuscan.cab:"
For ($i = 0; $i -lt $SearchResult.Updates.Count; $i++) {
    $update =       $SearchResult.Updates.Item($i)
    Write-Host ($i + 1) "> "     $update.Title
}

Remove-Item -Path                                                                           "$DownloadDirFile" -Force

# - + - ここまで - + -
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?