Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
大変おまたせしましてすみません。System Center Essentials の環境が壊れてしまい、再構築したりなんだりで時間をくってしまいました。
今回は「その4 インストール編」です。
その1~その3 は以下をご参照ください。
SCE / WSUS :今すぐに更新ファイルやソフトウェアをインストールしたい その1
SCE / WSUS :今すぐに更新ファイルやソフトウェアをインストールしたい その2 検索編
SCE / WSUS :今すぐに更新ファイルやソフトウェアをインストールしたい その3 ダウンロード編
今回で、ひとまずスクリプトの作成は完了です。
ここまで読んでいただければ、あとはオブジェクトをちょっと変えるだけですから文法的に難しいところは特にありません。
スクリプトは その2 および その3 からの続きになっていますので、保存する場合には その2+その3+その4 を1つのテキストファイルに貼り付けて保存してください。保存時の拡張子は vbs、実行時の書式は以下の通りです。
| cscript hogehoge.vbs |
' その3 からの続きです Wscript.EchoWScript.Echo "更新ファイルをインストールしています..." ' 更新ファイルをインストールするには、UpdateInstaller オブジェクトを使用します。' まずは「その1」に示したオブジェクトモデル図をご覧ください。' UpdateSession オブジェクトの配下に UpdateInstaller オブジェクトがありますよね。' つまり、UpdateSession オブジェクトを起点として、UpdateInstaller オブジェクトの' インスタンスを取得する必要があるわけです。' UpdateInstaller オブジェクトのインスタンスを取得するには、CreateUpdateInstaller ' メソッドを使用します。 Set objUpdateInstaller = objUpdateSession.CreateUpdateInstaller() ' UpdateInstaller オブジェクトを取得したら、インストールする更新ファイルを指定' しなければなりません。今回は、未適用の更新ファイルを片っ端から適用しますので、' その2 で取得した UpdateCollection オブジェクトを Update パラメタに与えてあげれば' OK です。 objUpdateInstaller.Updates = objUpdateCollection ' 更新ファイルを指定したら、Install メソッドで更新開始です。' ちなみに、更新が完了するまで一旦応答が無くなりますので注意してください。' 処理結果は、InstallationResult オブジェクトに格納されます。 Set objInstallationResult = objUpdateInstaller.Install() Wscript.Echo WScript.Echo "更新結果"Wscript.Echo "-------------------------------------------------" ' 更新が完了したら、それぞれの更新ファイルごとにインストール結果を参照しましょう。 For i = 0 to objUpdateCollection.Count - 1 ' インストール結果を取得するには、InstallationResult オブジェクトの ' GetUpdateResult メソッドを使用します。注意しなければならないのは、 ' GetUpdateResult メソッドの戻り値がコレクション型であるということです。 ' つまり、個々の更新ファイルごとに戻り値が格納されているわけです。 ' なので、変数 i をインデックスとして、For Next でループさせることで ' 個々の結果を取得できわけですね。 ' でもって、もう1点だけ注意です。 ' GetUpdateResult メソッドの戻り値は、UpdateInstallationResult オブジェクト ' であり、戻り値そのものではありません。以下を見てください。 ' https://msdn2.microsoft.com/en-us/library/aa386486.aspx ' 戻り値を取得するには、UpdateInstallationResult オブジェクトの ResultCode ' プロパティを使用します。 ' ' なお、以下は、objInstallationResult.GetUpdateResult(i).ResultCode ' というように、ResultCode 取得を1行で書いてあります。 ' objInstallationResult.GetUpdateResult(i).ResultCode によって戻り値が ' とれますから、これを Select Case で判断して strResult には表示用の ' 日本語をセットしています。 Select Case objInstallationResult.GetUpdateResult(i).ResultCode Case 0 strResult = "開始されていません" Case 1 strResult = "処理中です" Case 2 strResult = "正常に終了しました" Case 3 strResult = "処理は完了しましたがエラーがあります" Case 4 strResult = "失敗しました" Case 5 strResult = "中断しました" Case Else strResult = "不明" End Select WScript.Echo "・" & objUpdateCollection.Item(i).Title & ", " & strResult Next ' 更新ファイルを適用すると、中には再起動を要求するものがあります。' 再起動の要否は RebootRequired プロパティで確認することができます。' ただし、ここでも1点注意してください。' 以下の場合、RebootRequired プロパティを InstallationResult オブジェクト' から取得しています。InstallationResult オブジェクトの RebootRequired には、' 今回の更新処理の結果、再起動を要求している更新ファイルがあれば True が格納' されます。' 個々の更新ファイルごとに再起動の要否を確認するのであれば、上記の Forループ' の中で、objInstallationResult.GetUpdateResult(i).RebootRequired を参照' してください。 If objInstallationResult.RebootRequired then WScript.Echo WScript.Echo "再移動が必要です" & vbCrLfElse WScript.Echo WScript.Echo "再移動は必要ありません" & vbCrLfEnd If Wscript.Echo "更新処理が完了しました" |
以上でスクリプトファイルの作成は完了しました。実行結果例を以下に示します。
残るは、SCE へのタスク登録です。
タスクへの登録手順については、動画でお送りしたいと思うのでちょっと準備をさせてください。
Comments
Anonymous
January 01, 2003
System Center Essentials には、ソフトウェアの配信機能と、更新ファイルの配信機能があります。どちらも、裏では WSUS が動いています。 簡単にそれぞれの機能を書き出します。 ソフトウェアの配布機能Anonymous
May 13, 2011
blogs.technet.com/.../sce-wsus-4.aspx 更新プログラムをVBSでインストールする上記のサイト、大変勉強になりました。ありがとうございます。 power users 権限でも実行できるようにしたいのですが、その場合の手段についてご存知でしたら教えて頂けないでしょうか。
