blob 10 Geschrieben 23. August 2010 Melden Teilen Geschrieben 23. August 2010 Hallo Zusammen, ich stehe gerade mal wieder auf dem bekannten Schlauch. Ich habe ein Objekt das ich in einer Schleife erneut befüllen möchte. Beispiel für das Objekt; lokale Administratoren auslesen: Set objComputer = GetObject("WinNT://" & strComputer & ",computer") Set objGroup = objComp.GetObject("Group", strGroup) In einer Schleife wird die Variabel "strComputer" immer durch einen anderen Rechner ersetzt. Jetzt kann es ja mal sein das der Computer aus ist wenn das Script läuft, daher mache ich eine Abfrage: If IsEmpty(objGroup) then msgbox "Computer ist aus!" End if Das klappt nur wenn der erste PC in der Liste aus ist, weil dann bleibt das Objekt leer. Jetzt prüft er den zweiten Computer, dieser ist an. Der dritte ist wieder deaktiviert, dann überspringt er den "IsEmpty" Part. Ich habe es mit "Set objGroup = Nothing" probiert, aber das klappt nicht. Jemand eine Idee? Wenn möglich nicht mit "If Err.Number..." Danke im voraus! Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 23. August 2010 Melden Teilen Geschrieben 23. August 2010 Moin, das dürfte ein "Uninitialized Data Bug" sein. Nur beim ersten Durchlauf sind die Objekte leer. Danach schlägt die Neuzuweisung fehl, aber die Objekte sind ja noch befüllt. Abhilfe ähnlich wie hier: Zielsucher | heise Netze Gruß, Nils Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 24. August 2010 Melden Teilen Geschrieben 24. August 2010 (bearbeitet) und wenns um mal mehr als 3 Rechner geht, braucht das Skript ziemlich lang, wenn es für jeden Verbindungsversuch auf einen ausgeschalteten Rechner erst auf den Timeout warten muss. Die wmi-Methode win32_pingstatus Win32_PingStatus Class (Windows) ist genau dafür da, um vor dem Binden die Erreichbarkeit zu prüfen. Der StatusCode (siehe MSDN) zeigt dir ausserdem frei Haus zusätzlich noch an, warum evtl. ein Ping gescheitert ist. Mit objGroup = Nothing (ohne set) solltest du eigentlich das Objekt löschen können cu blub bearbeitet 24. August 2010 von blub Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 24. August 2010 Melden Teilen Geschrieben 24. August 2010 Moin, Timeout[...] wmi-Methode win32_pingstatus ... wie ja auch in dem von mir verlinkten Artikel ausgeführt. ;) Gruß, Nils Zitieren Link zu diesem Kommentar
blob 10 Geschrieben 24. August 2010 Autor Melden Teilen Geschrieben 24. August 2010 Merci! Nun klappt es einwandfrei. Das mit dem Timeout ist auch ein guter Tipp, denn es geht um mehr als 600 Rechner ;-) Baue ich nacher gleich noch mit ein. Ich habe es nun mit If "err.number <> 0" gelöst. Danke! Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 24. August 2010 Melden Teilen Geschrieben 24. August 2010 Moin, ... wie ja auch in dem von mir verlinkten Artikel ausgeführt. ;) Gruß, Nils Selbstverständlich gebührt dir die alleinige Ehre! ;) Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 24. August 2010 Melden Teilen Geschrieben 24. August 2010 Moin, Selbstverständlich gebührt dir die alleinige Ehre! ;) Off-Topic:so ist's recht. Stehen Sie bequem. ;) Genau betrachtet, müsste man dann noch Johannes Endres von der c't erwähnen, der mich auf das Problem aufmerksam gemacht hat und auf dessen Hinweis hin ich die Lösung gebaut habe. Aber das würde vielleicht zu weit führen. Ist ja nicht so, dass wir die ersten wären, die das machen. :cool: Gruß, Nils Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.