tacher 10 Geschrieben 28. August 2007 Melden Teilen Geschrieben 28. August 2007 Hallo zusammen Ich bastle grad an einem Script um einer gewissen menge von Computern gewisse WINS Server zu setzen. Das Script läuft soweit ganz gut. Ausser wenn bereits Wins Server gesetzt wurden. Ich hab bis jetzt nicht rausgefunden woran es liegt. 1. aus irgend einem Grund liefert For Each oAssociator In cAssociators mehr als nur eine Instanz. Ich weiss nicht genau wieso, aber ich habs mal dadurch gelöst, dass ich unten ein Wscript.quit() durchführe wenns erfolgreich oder halt nicht erfolgreich gesetzt wurde. Eventuell hilft das jemandem weiter. 2. Ist schon ein Server gesetzt, crasht das Script bei Set objInParam = oAssociator.Methods_("SetWINSServer").InParameters.SpawnInstance_() mit dem Fehler "not found" Code "88041002" source "SWbemMethodSet" Wieso passiert das? Muss ich erst die Server entfernen bevor ich sie neu setzen darf? Ich dacht mir ich frag erst hier bevor ich wild drauflos Code. arrComputers = Array("localhost") sPrimaryWINS = "1.2.3.4" sSecondaryWINS = "1.2.4.3" For Each sComputer In arrComputers MsgBox sComputer Set objInstances = GetObject("winmgmts:{impersonationLevel=impersonate}//" & sComputer & "/root/CIMV2").ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE AdapterType=" & Chr(34) & "Ethernet 802.3" & Chr(34) & " AND NetConnectionStatus=2", "WQL") For Each objInstance In objInstances msgbox objInstance.name Set cAssociators = objInstance.Associators_(,Win32_NetworkAdapterConfiguration) For Each oAssociator In cAssociators Set objInParam = oAssociator.Methods_("SetWINSServer").InParameters.SpawnInstance_() objInParam.WINSPrimaryServer = sPrimaryWINS objInParam.WINSSecondaryServer = sSecondaryWINS Set objOutParam = oAssociator.ExecMethod_("SetWINSServer", objInParam) If objOutParam.returnValue = 0 Then WScript.Echo "Wins Server values written" wscript.quit(0) Else WScript.Echo "Wins Server values could not be written. Error Number " & objOutParam.returnValue wscript.quit(objOutParam.returnValue) End If Next Next Next Gruss Tacher Zitieren Link zu diesem Kommentar
thumb 10 Geschrieben 28. August 2007 Melden Teilen Geschrieben 28. August 2007 Hallo tacher, ich bin so frei und gehe jetzt nicht auf Dein Script ein. Hier ist eines, welches ich einmal eingesetzt hatte, vielleicht hilft Dir dies. Gruß THUMB On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colNetCards = objWMIService.ExecQuery _ ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True") For Each objNetCard in colNetCards strPrimaryServer = "192.168.1.100" strSecondaryServer = "192.168.1.200" objNetCard.SetWINSServer strPrimaryServer, strSecondaryServer Next Zitieren Link zu diesem Kommentar
tacher 10 Geschrieben 28. August 2007 Autor Melden Teilen Geschrieben 28. August 2007 Wie ist das eigentlich? gibts PCweit nur 2 WINSSERVER? Oder sind die Interface spezifisch? Ich muss das Script auf Servern mit bis zu drei Interfaces ausführen. Muss ich diese Setting Pro Interface setzen? Sprich muss ich aufpassen was ich setz, weil sonst das falsche Interface meine WINS Server setting bekommt? Wenn ja ist dein Script leidern icht benutzbar, da es einfach überall die WINS Server setzt. Ansonsten wärs eine Alternative die ich in Betracht ziehen könnte. Zitieren Link zu diesem Kommentar
thumb 10 Geschrieben 28. August 2007 Melden Teilen Geschrieben 28. August 2007 Hallo Tacher, Du kannst die TCP/IP Eigenschaften, also auch den WINS für jede NIC konfigurieren. Die Zeile ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True") wählt alle NICs aus für die IP enabled ist. Diese musst Du abändern dass nur die von Dir gewünschte NIC ausgewählt wird. Entweder schon in der WMI Abfrage, oder erst in der FOR Schleife die die Collection durchsucht. Gruß THUMB Zitieren Link zu diesem Kommentar
thumb 10 Geschrieben 28. August 2007 Melden Teilen Geschrieben 28. August 2007 Hi Tacher, Guck mal, hier habe ich eine Ausgabe der Netzwerkkarten Caption eingebaut, sodass Dir nun angezeigt wird, für welche Karten der WINS gesetzt wird. In der FOR Schleife wird dann nur für die angegebene Karte (in meinem Falle "[00000001] Broadcom NetXtreme Gigabit Ethernet for hp") der WINS gesetzt. Hier musst Du dann die von Dir gewünschte Karte eintragen. Gruß THUMB PS: Die MsgBox musst Du natürlich im Betrieb entfernen, sie ist nur da, um Dir die NIC Beschreibung auszugeben, um den Namen in die IF-Abfrage zu übernehmen. strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colNetCards = objWMIService.ExecQuery _ ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True") For Each objNetCard in colNetCards MsgBox objNetcard.Caption If objNetcard.Caption = "[00000001] Broadcom NetXtreme Gigabit Ethernet for hp" Then strPrimaryServer = "192.168.1.100" strSecondaryServer = "192.168.1.200" objNetCard.SetWINSServer strPrimaryServer, strSecondaryServer End If Next 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.