5
4

More than 5 years have passed since last update.

Microsoft Updateを有効にする。ただし、コマンドラインで。

Last updated at Posted at 2017-02-17

Windows UpdateではなくMicrosoft Updateです。

Windows本体だけではなく、OfficeやVisual Studioまで更新してくれるサービスです。
世間ではあんまり評判よくないですが、自分はそこそこ活用してます。

これを有効化する操作自体は別に難しくないのですが、公式の方法ではGUIから設定する方法しか紹介されておらず、
端末が大量にある場合や、処理を自動化(無人化)したい場合に問題となります。
が、実はMicrosoft Updateを司るCOMコンポーネントを直接操作することで、
GUIを介さずにMicrosoft Updateを有効化することが出来ます。

有効化操作をバッチコマンド化し、グループポリシーなどを利用してタスクとして端末に配布すれば、
有効化しなければならない端末が複数あっても苦にならないでしょう。
何らかの理由でInternet Explorerが使えない場合や、「[スタート]メニューを使用して、更新プログラムを確認してください」などというエラーでMicrosoft Updateを有効化出来ない場合でもバッチコマンド経由なら有効化できます。

スクリプト(バッチファイル)

単にVBScriptやJScriptで実行しても結果は同じですが、管理者として実行させるにはバッチファイル形式のほうが便利なので、スクリプト埋込み式バッチファイルとして作成しています。

  • Windows7、Windows10で動作確認をしています。
  • コード利用は利用者の責任でお願いします

Microsoft Update有効化

MSUpdEnable.cmd
@if(0)==(0) ECHO OFF

net stop wuauserv
cscript.exe /nologo //E:JScript "%~f0" %*
net start wuauserv

GOTO :EOF
@end
@以降がJScript

var svc = WScript.CreateObject("Microsoft.Update.ServiceManager")
svc.AddService2("7971f918-a847-4430-9279-4a52d1efe18d",7,"")

Microsoft Update無効化

参考として無効化用スクリプトも。

MSUpdDisable.cmd
@if(0)==(0) ECHO OFF

net stop wuauserv
cscript.exe /nologo //E:JScript "%~f0" %*
net start wuauserv

GOTO :EOF
@end
@以降JScript

var svm = WScript.CreateObject("Microsoft.Update.ServiceManager");
svm.RemoveService("7971f918-a847-4430-9279-4a52d1efe18d");

解説
参考文書のスクリプトをJScriptに書き換えてバッチに埋め込んでます。
スクリプト実行前後でアップデートサービスを停止、再開しています。

使い方

スクリプトをコピペしてバッチファイルを作成、適当な場所に保存し、「管理者として実行」してください。
タスクスケジューラ等に組み込んでも構いません。

参考文書

Opt-In to Microsoft Update
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa826676(v=vs.85).aspx

5
4
1

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
5
4