はじめに
Windows 10 Pro 通常版では、SNMPが非推奨コンポーネントになりました。
※Windows 10 IoT版では、まだ「Windows の機能の有効化または無効化」にメニューがあります。
インスール方法
非推奨コンポーネントになったため、 Power Shell の Get-WindowsCapability コマンドを使ってインストールする必要があります。
add-windowscapability -online -name "snmp.client~~~~0.0.1.0"
正常
正常にインスールできた場合、下記のような結果になります。
Path :
Online : True
RestartNeeded : False
失敗
0x8024401cエラーとなります。
add-windowscapability : Add-WindowsCapability に失敗しました。エラー コード = 0x8024401c
発生場所 行:1 文字:1
+ add-windowscapability -online -name "snmp.client~~~~0.0.1.0"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Add-WindowsCapability], COMException
+ FullyQualifiedErrorId : Microsoft.Dism.Commands.AddWindowsCapabilityCommand
調査
この問題についてネットで検索しても、なかなかいい情報が見つかりませんでした。
FOD(Feature On Demand) という、オプションとしてインストールできる OS コンポーネントであり、オンデマンドでいつでも追加・削除が可能な機能があります。
SNMP FOD ダウンロード コメント欄のYou can download it here:
https://techwithjasmin.com/monitoring/how-to-enable-snmp-on-windows-without-internet-access/
C:\workフォルダにSNMPのcabファイル一覧を配置して、DISMコマンドを実行しました。
Dism /online /add-package /packagepath:"C:\work\Microsoft-Windows-SNMP-Client-Package~31bf3856ad364e35~amd64~~.cab"
展開イメージのサービスと管理ツール
バージョン: 10.0.19041.3636
イメージのバージョン: 10.0.19045.4291
1 / 1 を処理しています - エラーが発生しました - Microsoft-Windows-SNMP-Client-Package エラー: 0x800f0955
エラー: 0x800f0955
DISM が失敗しました。操作は実行されませんでした。
詳細については、ログ ファイルを確認してください。
DISM ログ ファイルは C:\Windows\Logs\DISM\dism.log にあります
対応
2ヶ月くらい解決できずにいましたが、ふとお風呂場でWindows Updateの設定が悪さしているのかもと思いつきます。
エラーコードではなく、エラー内容の「Add-WindowsCapability COMException」で検索すると下記サイトがヒットしました。
これは WSUS 導入環境など、 Windows のコンポーネントをインターネット経由ではなく WSUS サーバから配信しているような環境で起こる現象です。
これはグループポリシーエディタで解決する事ができます。
OpenSSH Server Install failed, contact your administrator to get this feature
エラーコードは0x800f0954と違いますが、Windows Updateの設定が怪しいと思っていたため、グループポリシーの変更を行いました。
1.ファイル名の実行で「gpedit.msc」を入力して、ローカルグループポリシーエディタを起動します。
2.「コンピューターの構成->管理用テンプレート->システム」へ移動し、「オプションコンポーネントのインストールおよびコンポーネントの修復のための設定を指定する」をダブルクリックします。

3.「オプションコンポーネントのインストールおよびコンポーネントの修復のための設定を指定する」の「Windows Server Update Service (WSUS) の代わりに、Windows Update から修復コンテンツとオプションの機能を直接ダウンロードする」にチェックを付ける。

PowerShell(管理者モード)で以下のように実行します。
gpupdate /force
もう一度インストールを試行します。
add-windowscapability -online -name "snmp.client~~~~0.0.1.0"
0x8024401c から 0x8024002e にエラーの内容が変更されました。
0x8024002e エラー
Windows Update エラー 0x8024002Eのトラブルシューティング にあるグループポリシーの変更も実行しました。
https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/installing-updates-features-roles/troubleshoot-windows-update-error-code-0x8024002e
1.ファイル名の実行で「gpedit.msc」を入力して、ローカルグループポリシーエディタを起動します。
2.「コンピューターの構成」→「管理用テンプレート」→「システム」→「インターネット通信の設定」→「Windows Update のすべての機能へのアクセスをオフにする」をダブルクリックします。

3.「無効」にチェックを付けて「OK」ボタンをクリックします。

gpupdate /forceを実行するとエラーで未指定に戻されました。
もう一度インストールを試行してみると
add-windowscapability -online -name "snmp.client~~~~0.0.1.0"
正常にインスールできたようです。
※別PCで試した際には10分程度時間がかかったが、SNMPサービスが登録された。
Path :
Online : True
RestartNeeded : False
最後に
ついつい、エラーコードで検索しがちですが、エラー内容の「Add-WindowsCapability COMException」で検索すれば、もっと早く解決できたと思われる。
この記事を書いている時に調べ直したが、エラーコード0x800f0955で検索したら、最終的には辿り着いたかも知れない。