In my experience, there are a few things that have caused me problems:
1) WMI / COM security blocks remote scripting
2) WMI repository is corrupt
3) WMI service instance has become corrupt (a service restart fixes this)
4) Firewall rules (I am currently troubleshooting this)
I recommend that you ping each server before you attempt to connect to it (I have some code for this that I'll post later). After that you are going to need to write code around the following points to trap the error:
1) Connection phase (oWMI = GetObject("winmgmts://<remotehost>/Root/CIMv2"))
2) Query phase (cItems = oWMI.ExecQuery("SELECT * FROM ..."))
3) Results phase (For Each oInstance in cItems...Next)
I've had problems in each of these phases (most recently the 3rd, which turned out to be the WMI service restart issue listed above)
PSC
Governments and corporations need people like you and me. We are samurai. The keyboard cowboys. And all those other people out there who have no idea what's going on are the cattle. Mooo! --Mr. The Plague, from the movie "Hackers