1

今月初めに、vbscriptを使用して、サーバーに保留中の重要な更新があるかどうかを確認する方法について質問しました。提供された回答はうまく機能し、追加のテストのためにスクリプトをQA環境に送信しました。

サーバーを実行できる「ボールト」環境があり、サーバーはWindows Update Agentにアクセスできず、WSUSを介して直接WindowsUpdateを取得することしかできません。VBScriptを使用して、 Windows Update Agentではなく、WSUSを介して重要な更新のみを直接チェックする方法はありますか?

このコードで0x8024402Cエラーが発生します(前の質問から取得したロジック)。これは、結果に応じてPASSまたはFAIL出力を提供するサブルーチンにラップされます。一部のサーバーでこれが機能することを確認しました。

Dim count
count = 0

'Microsoft Magic
Set updateSession = CreateObject("Microsoft.Update.Session")
Set updateSearcher = updateSession.CreateupdateSearcher()
Set searchResult = updateSearcher.Search("IsAssigned=1 and isHidden=0 and IsInstalled=0 and Type='Software'")
'End Microsoft Magic
    If searchResult.Updates.Count <> 0 Then ' If Updates were found
      For i = 0 to searchResult.Updates.Count - 1 'Just count the number of updates
         count = count + 1
      Next
      objResult.Text = "FAIL"
      objComment.Text = "There are " & count & " updates that need to be installed"
    Else
      objResult.Text = "PASS"
      objComment.Text = "All updates are installed"
    End If

  If NOT len(objResult.Text) Then 'Just in case searchResult produces an error
    objResult.Text = "FAIL"
    objComment.Text = "Could not query Windows Update Server"
  End If

少なくとも、現在のコードでWindows Updateエージェントに接続できない場合にエラーをチェックし、上記のように出力して、スクリプトの残りの部分を続行できるようにする方法はありますか?

4

2 に答える 2

1

サーバーを実行できる「ボールト」環境があり、サーバーはWindows Update Agentにアクセスできず、WSUSを介して直接WindowsUpdateを取得することしかできません。VBScriptを使用して、Windows Update Agentではなく、WSUSを介して重要な更新のみを直接チェックする方法はありますか?

おそらく、アーキテクチャに関するメモがこれに役立ちます。すべてのシステムにはWindowsUpdateエージェントがあります。オペレーティングシステムに同梱されています。Windows Updateエージェントは、自動更新と通信するホームシステム、IEでWindows Updateを参照する古いシステム、コントロールパネルWUAppの使用、またはWSUSサーバーとの通信など、すべての作業を実行します。これは、WindowsUpdateエージェントです。仕事をします。

上記のスクリプトはWSUSサーバーと通信し、WindowsUpdateAgentがWSUSサーバーに報告した内容に基づいて情報を取得します。

「ボールト環境」への参照が参照していると私が信じている切断されたシステムは、AU / WU / MUにアクセスできませんが、「ボールト環境」のサイズによっては、WSUSを実装することは可能です。その環境内のサーバー。WSUSのドキュメントには、切断されたネットワークでWSUSサーバーを展開および管理する方法の詳細な手順が含まれています。

切断されたネットワークにWSUSサーバーがない場合は、オフラインスキャンキャブ(WSUSSCN2.CAB)を使用することもできますが、このオフラインファイルにはすべての更新プログラムが含まれているわけではなく、セキュリティ更新プログラム、更新プログラムのロールアップ、およびサービスパック。したがって、すべての重要な更新プログラムを入手したい場合は、ニーズを満たしません。

于 2013-02-27T13:34:40.257 に答える
0

スクリプトは、それぞれのホストで構成されている更新サーバーをチェックします(試行します)。ホストがWSUSを使用するように構成されている場合、スクリプトはそのサーバーをチェックします。ホストがMicrosoftのWindowsUpdateサーバーをチェックするように構成されている場合、ホストはそれらのサーバーに接続しようとします。

エラー8024402Cは、コンピューターが構成済みの更新サーバーに接続できないことを示します。ホストがWSUSを使用するように構成されているかどうかを確認します。

Const HKLM  = &h80000002
Const wuKey = "SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"

Set wmi = GetObject("winmgmts://./root/default:StdRegProv")
status = wmi.GetStringValue(HKLM, wuKey, "WUServer", wsus)

If status = 0 Then
  WScript.Echo "Using WSUS: " & wsus
Else
  WScript.Echo "Using Windows Update directly."
End If

次に、それぞれのサーバーに接続できるかどうかを確認します(必要に応じて、ポート80をWUServer値で指定されたポートに変更します)。

telnet wsus.example.com 80

または(Windows Updateの場合):

telnet windowsupdate.microsoft.com 80

WSUSがない場合、ホストはMSKB記事885819にリストされているすべてのURLに接続できる必要があることに注意してください。

また、ホストで名前解決が機能することを確認してください。

于 2013-02-21T10:00:43.550 に答える