Domanda
Ho un problema interessante / fastidioso con alcuni VBScript in esecuzione su Windows Server 2003 (che funzionano bene su XP).
Gli script fondamentalmente periodicamente chiamano oggetti WMI per estrarre le informazioni sulle prestazioni e scrivere in un file di log. E 'iniziata da Operazioni pianificate alle 12:05 ogni mattina e corre fino a mezzanotte (o sarebbe se non continua a arrestarsi). E 'di proprietà di amministratore e il compito è "cscript xx.vbs blah blah blah"
.
A volte si corre per ore, a volte solo pochi minuti. Le chiamate sono della forma:
set objWMI = getObject("winmgmts:\\.\root\cimv2")
: : :
do lots of times:
set itemCpu = wmi.get("Win32_PerfRawData_PerfOS_Processor.Name='_Total'")
L'errore ritorna con una finestra di dialogo che indica che la chiamata di procedura remota non è stato eseguito, ma nessuna informazione supplementare (che dà un numero esadecimale a 32-bit e io aggiornare a questa domanda con la prossima volta che succede, ma le mie ricerche di Google alzato pagine molto generici, quindi non sono sicuro che il codice aiuterà).
E 'anche usato per mandare in crash out (lo stesso errore) con la seguente riga, ma non ho visto un problema con questo da quando ho cambiato usare Win32_Perf Raw Data_PerfOS_Memory.
set colMem = wmi.execQuery("select AvailableKBytes" & _
" from Win32_PerfFormattedData_PerfOS_Memory",,48)
Mi sembra di capire che non è relativo alla rete dal momento che è sulla stessa macchina.
Inoltre ho cercato di impostare objWMI a nulla e fare un altro getObject ogni volta attraverso il ciclo, ma che non ha aiutato.
Un altro possibile problema, in realtà è in esecuzione all'interno di VMWare Workstation (ma così è la XP) -. La prossima settimana avrò una configurazione fisica-PC di Win2k3 corsa per testare lì
Lo strano sottile è, a volte corre per ore senza problemi, la raccolta dei dati e l'invio nel file di registro. Altre volte, si blocca in dieci minuti.
Tutte le idee dai guru di Windows là fuori in mezzo a noi?
UPDATE:
D'accordo, è finalmente riuscito di nuovo. Ecco il mio piccolo sforzo di cattura dello schermo:
+-------------------------------------------------+
| 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 |
+-------------------------------------------------+
Linea 271 è:
set itemCpu = wmi.get("Win32_PerfRawData_PerfOS_Processor.Name='_Total'")
con wmi
essendo stato precedentemente impostato con:
set wmi = getObject("winmgmts:\\.\root\cimv2")
(questo viene continuamente ricreato all'interno del ciclo, quindi non credo che sia un problema con la connessione RPC andare stantio).
Soluzione
L'errore 1722 (0x6BF) è: Il server RPC non è disponibile.
Un suggerimento: gratis tutti gli oggetti in modo esplicito nello script
Per eseguire meglio diagnosticare provare a sniffare la rete utilizzando Microsoft Network Monitor 3.2 e la ricerca per il rilascio. (vedere questo aiuto Come il traffico di rete di cattura con Network Monitor )
Buona look.
Altri suggerimenti
Se lo script sta controllando gli account utente quando viene eseguito a dare un'occhiata a questo hotfix. E 'solo un problema nel 2003 che può spiegare perché funziona bene sul vostro sistema XP.
http://support.microsoft.com/kb/933593
Si stava causando alcuni problemi casuali per noi sul posto di lavoro che non ha del tutto corrispondono alla descrizione in questo articolo, ma l'aggiornamento rapido è stato risolto i nostri problemi.