Windows Server 2016 役割と機能追加で、0x80073701エラーがでることがあります。言語パックが原因の場合に参考になる情報があったので、紹介します。
情報元はこちら、
0x80073701 エラー発生 | ricky77770のブログ
内容は、Windows Server 2016に役割と機能を追加で以下のエラーがでたというものです。実は私も最近、経験をしましたが、復旧方法がわからずリストアとなりましたが、今回は復旧できたそうです。
指定されたサーバーで機能を追加または削除する要求に失敗しました。
1つ以上の役割、役割サービス、または機能をインストールできませんでした。
参照されたアセンブリは見つかりませんでした。エラー: 0x80073701
参照されたアセンブリは見つかりませんでしたというのは、対象のファイルが見つからない場合に発生するそうです。
最終的にOS再インストールで解決しかなかったとあります。運用中のサーバで発生ということで、Windowsってこういった問題が発生しやすいので怖いですよね。。
今回の事象については、以下が原因とのこと。
機能追加時のエラー詳細になる「CBS.LOG」を添付して状況をお伝えすると早速、解答が。なんと、OEM版で発生する問題で他メーカーで発生しているそうで具体的な解決方法が。(さすがメーカー)
問題はやはり言語パッケージのようで、通常初期セットアップ後にセットアップ以外の不要言語は自動的にアンインストールされるはずが正しくアンインストールされず情報が中途半端に残ってしまうため以後の機能追加やWindowsUpdateに影響しエラーが発生するとのこと。
CBS.log (%WinDir%\Logs\CBS\CBS.log)ログを確認することで言語パックによる問題かどうかは気づけるかもしれません。
仮に言語パックが原因の場合は、以下が対処法になるようです。
1)不要な言語パッケージのアンインストール
2)問題となっている言語の特定
3)問題となっている言語の再インストール、アンインストール
備忘録代わりに手順をそのまま引用
まず、1)ですがコマンドプロンプトを管理者で起動し以下のコマンド
lpksetup /u
「表示言語のインストールまたはアンインストール」が起動するので
不要な言語を削除します。
日本語と英語は残してあとは削除。
※ 英語は基本機能らしく削除しない続いて2)
C:\Windows\servicing
または
C:\Windows\servicing\Packagesレジストリ
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packagesを確認し、日本語と英語以外の言語らしき痕跡が残っていないかを
確認する。
今回の例では韓国語が残っていたので
Containers-Server-onecore-Package~31bf3856ad364e35~amd64~ko-KR~10.0.14393.0.cat
というファイルがありました。他にもko-KRが入ったファイルが複数ありました。対象言語を特定したところで、3)のパッケージの作業になります。
まずは再インストールします。
言語パックは、OEM メディアの langpacks フォルダにあるので
DVDをセットし、:(DVDドライブ)\langpacks\¥ko-KR\lp.cab
をローカルにコピー次のコマンドでインストール
Dism /online /Add-Package /PackagePath:C:\temp\lp.cab
インストールしたら、先程と同様に
lpksetup /u
でアンインストール。
完全に復旧作業となりますね。まずは、ログを見て、言語パックが原因かどうかは、ログからチェックすることはできそうです。