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 接続が古くなるという問題ではないと思います)。