J'ai un problème intéressant/ennuyeux avec certains VBScripts fonctionnant sur Windows 2003 Server (ils fonctionnent bien sur XP).Erreur WMI après un certain temps
Les scripts appellent de manière périodique des objets WMI pour extraire des informations sur les performances et les écrire dans un fichier journal. Il est démarré par des tâches programmées à 00h05 chaque matin et se poursuit jusqu'à minuit (ou le ferait s'il ne s'écrasait pas). Il appartient à l'administrateur et la tâche est "cscript xx.vbs blah blah blah"
.
Parfois, il fonctionne pendant des heures, parfois seulement quelques minutes. Les appels sont de la forme:
set objWMI = getObject("winmgmts:\\.\root\cimv2")
: : :
do lots of times:
set itemCpu = wmi.get("Win32_PerfRawData_PerfOS_Processor.Name='_Total'")
L'erreur, il revient avec une boîte de dialogue indiquant que l'appel de procédure distante a échoué à exécuter, mais aucune information supplémentaire (il ne donne un nombre hexadécimal 32 bits et I » Je mettrai cette question à jour avec la prochaine fois que cela arrivera, mais mes recherches sur Google ont montré des pages très génériques, donc je ne suis pas sûr que le code vous aidera).
Il a également utilisé pour écraser sur (même erreur) avec la ligne suivante, mais je n'ai pas vu un problème avec celui-ci depuis je l'ai changé à utiliser Win32_Perf Raw Data_PerfOS_Memory. Je comprends que ce n'est pas lié au réseau, car il est sur la même machine.
J'ai également essayé de mettre objWMI à zéro et de faire un autre getObject à chaque fois à travers la boucle, mais cela n'a pas aidé.
Un autre problème possible, il fonctionne réellement à l'intérieur de VMWare Workstation (mais il en est de même de l'XP) - la semaine prochaine, j'obtiendrai une configuration PC physique de Win2k3 pour le tester.
L'étrange est mince, il fonctionne parfois pendant des heures sans problèmes, la collecte des données et l'envoi dans le fichier journal. D'autres fois, il se bloque dans dix minutes.
Des idées des gourous Windows parmi nous?
MISE À JOUR:
D'accord, il a échoué finalement à nouveau. Voici mon petit effort de capture d'écran:
+-------------------------------------------------+
| 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 |
+-------------------------------------------------+
Ligne 271 est:
set itemCpu = wmi.get("Win32_PerfRawData_PerfOS_Processor.Name='_Total'")
avec wmi
ayant été préalablement sélectionnée avec:
set wmi = getObject("winmgmts:\\.\root\cimv2")
(celui-ci est continuellement re -created à l'intérieur de la boucle, donc je ne pense pas que ce soit un problème avec la connexion RPC devenir obsolète).
A propos des erreurs dans l'événement, rien? – lsalamon
Rien dans la visionneuse d'événement du tout (j'aurais dû le mentionner). – paxdiablo