Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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^^^^^^^^^

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben (bearbeitet)

ipconfig /all | find "DNS-Server"

Das kannst Du auch in eine Datei ausgeben lassen:

ipconfig /all | find "DNS-Server" > logdateideinerwahl.txt

Bearbeitet von hades

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...