180Grad Geschrieben 23. Mai 2008 Geschrieben 23. Mai 2008 Um was geht es?: Ich habe ein VBScript, das für mich die IP-Adresse des primären DNS-Servers ausfindig macht. Auf diese, erhaltene IP-Adresse setze ich sozusagen mit einer WMI-Prozedur einen NSLOOKUP-Befehl ab, der mir den Hostnamen des primären DNS Servers wiedergibt. Das Problem: Das VBScript gibt mir nur den richtigen Hostnamen des DNS-Servers, wenn ich es mit Administratorenrechten ausführe. Führe ich das Script mit einem normalen Benutzernamen aus, dann gibt er mir den Hostnamen meines Computers zurück und nicht den, des DNS-Servers. Meine Frage: Gibt es vielleicht noch eine andere Möglichkeit, einen solchen nslookup Befehl abzusetzen? Oder noch viel einfacher: Weiss jemand, wie ich per Script den Hostnamen meines (primären) DNS Servers erhalte? Gruss 180Grad Der Code: ' Alle Domain Name System Server (DNS) IP-Adressen für diesen (lokalen) Computer ermitteln ^^^^^^^^^^^^^^^ On Error Resume Next Const wbemFlagReturnImmediately = &h10 Const wbemFlagForwardOnly = &h20 sClient = "." Set objWMIService = GetObject("winmgmts:\\" & sClient & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) For Each objItem In colItems strDNSServerSearchOrder = Join(objItem.DNSServerSearchOrder, ";") Next ' ^^^ENDE^^^^^^^^^ ' Die IP Adresse des primären DNS Servers ermitteln ^^^^^^^^^^^^^^^ sSemicolon = InStr(strDNSServerSearchOrder , ";") sPrimaryDNS_IP = Left(strDNSServerSearchOrder , sSemicolon - 1) MsgBox "IP Adresse DNS: [ " & sPrimaryDNS_IP & " ]" ' ^^^ENDE^^^^^^^^^ ' Hostnamen des primären DNS Servers ermitteln ^^^^^^^^^^^^^^^ Set objWMIService = GetObject("winmgmts:\\" & sPrimaryDNS_IP & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly) For Each objItem In colItems sDNS_Server = objItem.Name WScript.Echo "Hostname DNS: [ " & sDNS_Server & " ]" Next ' ^^^ENDE^^^^^^^^^ Zitieren
Amstelchen Geschrieben 23. Mai 2008 Geschrieben 23. Mai 2008 wenn ich das richtig verstanden habe, fragst du den localhost nach der IP des DNS und verbindest dich dann dorthin. der DNS gibt dir als hostname dann den des clients zurück - und ich glaube hier kann einfach kein connect stattfinden und deshalb bekommst du den lokalen hostname. du könntest es mit der impersonisation versuchen, und username und passwort übergeben, wenn du dich mittels WMI am DNS andockst: http://www.microsoft.com/technet/scriptcenter/resources/wmifaq.mspx wobei sich mir generell die frage stellt, ob nicht ein simpler reverse lookup auf die ip-adresse ohnhin den DNS-namen verraten würde, ohne sich via WMI hinzuverbinden. s'Amstel Zitieren
180Grad Geschrieben 23. Mai 2008 Autor Geschrieben 23. Mai 2008 Danke für die Antwort! Meinst du mit einem Reverse Lookup einen nslookup auf die IP-Adresse? Mit nslookup sehe ich das Problem mit dem Splitten usw.? Ich bin noch Anfänger in Sachen VBScript, sollte dieses jedoch schon noch hinkriegen. Ohne Hilfe schaffe ich dies jedoch nicht. Das Problem ist, dieses Script dient später eigentlich als "Login-Script". Also das heisst, sobald sich der User (ohne Administrator-Rechte) an der Domäne anmeldet, führt er dieses aus. Daher ist die Idee mit dem Benutzernamen und Passwort wahrscheinlich hierfür nicht geeignet? Gruss 180Grad Zitieren
Amstelchen Geschrieben 23. Mai 2008 Geschrieben 23. Mai 2008 ich würde davon absehen, in loginscripte solche konstrukte wie WMI-zugriffe einzubauen. wenn du dich an einer AD anmeldest, weisst du doch den hostnamen von der kiste - er steht (zumindest bei mir) spätestens nach dem anmeldung sogar in der umgebungsvariable LOGONSERVER. s'Amstel Zitieren
180Grad Geschrieben 23. Mai 2008 Autor Geschrieben 23. Mai 2008 Hallo! Nochmals danke für die Antwort. Bei mir steht bei Logonserver auch ein Server. Wir haben zwei Standorte und der Server bei "LOGONSERVER" verweist auf den anderen Standort. Den, den jedoch ich haben sollte bzw. muss, der steht nicht dort. Und auch sonst in der Registry usw. steht dieser nirgens. Den der ich haben muss, soll der primary Server sein. Ich dachte es sei leichter den 1. DNS Server herauszufinden aber man kann sich wie man sieht auch täuschen :-) Wenn du noch einen Tipp oder eine Idee hättest wäre ich froh darum. Ansonsten werde ich es wahrscheinlich mit der NSLOOKUP-Methode in DOS versuchen. Danke und Gruss 180Grad Zitieren
hades Geschrieben 25. Mai 2008 Geschrieben 25. Mai 2008 (bearbeitet) ipconfig /all | find "DNS-Server" Das kannst Du auch in eine Datei ausgeben lassen: ipconfig /all | find "DNS-Server" > logdateideinerwahl.txt Bearbeitet 25. Mai 2008 von hades Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.