-1

Windows 2003 Server で実行されているいくつかの VBScript で興味深い/厄介な問題があります (XP では正常に実行されます)。

スクリプトは、基本的に定期的に WMI オブジェクトを呼び出して、パフォーマンス情報を抽出し、ログ ファイルに書き込みます。これは、スケジュールされたタスクによって毎朝 12:05 に開始され、真夜中まで実行されます (または、クラッシュし続けなければ実行されます)。管理者が所有しており、タスクは"cscript xx.vbs blah blah blah"です。

何時間も実行されることもあれば、数分だけ実行されることもあります。呼び出しの形式は次のとおりです。

set objWMI = getObject("winmgmts:\\.\root\cimv2")
:   :   :
do lots of times:
    set itemCpu = wmi.get("Win32_PerfRawData_PerfOS_Processor.Name='_Total'")

返されるエラーは、リモート プロシージャ コールの実行に失敗したことを示すダイアログ ボックスですが、追加情報はありません (32 ビットの 16 進数が表示されるので、次回発生したときにこの質問を更新しますが、Google 検索で非常に一般的なページになったので、コードが役立つかどうかわかりません)。

また、次の行でクラッシュ (同じエラー) することもありましたが、Win32_Perf Raw Data_PerfOS_Memoryを使用するように変更して以来、この問題は発生していません。

set colMem = wmi.execQuery("select AvailableKBytes" & _
    " from Win32_PerfFormattedData_PerfOS_Memory",,48)

同じマシン上にあるため、ネットワーク関連ではないと思います。

また、objWMI を何も設定せず、ループのたびに別の getObject を実行しようとしましたが、それは役に立ちませんでした。

もう1つの考えられる問題は、実際にはVMWareワークステーション内で実行されていることです(ただし、XPもそうです)-来週、Win2k3を実行する物理PCセットアップを取得して、そこでテストします。

奇妙なことに、何時間も問題なく実行され、データが収集されてログ ファイルに送信されることがあります。また、10 分でクラッシュすることもあります。

Windows の専門家からのアイデアはありますか?

アップデート:

さて、それは最終的に再び失敗しました。画面キャプチャでの私の小さな努力は次のとおりです。

+-------------------------------------------------+
|  Windows Script Host                          |X|
+-------------------------------------------------+
|  /   Script:   C:\Program Files\blah\blah.vbs  |
|  /\   Line:     271                             |
|       Char:     2                               |
|       Error:    The remote procedure call       |
|                 failed and did not execute.     |
|       Code:     800706BF                        |
|       Source:   SWbemServicesEx                 |
+-------------------------------------------------+

271行目は次のとおりです。

set itemCpu = wmi.get("Win32_PerfRawData_PerfOS_Processor.Name='_Total'")

wmi以前に次のように設定されている:

set wmi = getObject("winmgmts:\\.\root\cimv2")

(これはループ内で継続的に再作成されているため、RPC 接続が古くなるという問題ではないと思います)。

4

2 に答える 2

1

エラー 1722(0x6BF) は次のとおりです: RPC サーバーを利用できません。

1 つの提案: スクリプトで明示的にすべてのオブジェクトを解放します。

最適な診断を行うには、 Microsoft Network Monitor 3.2を使用してネットワークをスニッフィングし、問題を検索してください。

よく見る。

于 2009-03-23T12:58:46.353 に答える
1

スクリプトの実行時にユーザー アカウントをチェックしている場合は、この修正プログラムを参照してください。これは、XP システムで問題なく動作する理由を説明する 2003 の問題のみです。

http://support.microsoft.com/kb/933593

記事の説明に完全には当てはまらないランダムな問題が職場で発生していましたが、ホットフィックスは問題を解決しました.

于 2009-03-23T16:18:34.517 に答える