Eyeswide 10 Geschrieben 11. November 2010 Melden Teilen Geschrieben 11. November 2010 Hallo zusammen, ich suche ein VB Script um Rechnernamen in IP`s umzuwandeln. Ich habe also eine Textdatei mit ca. 150 Rechnernamen und möchte die per VBscript in IPs umwandeln und diese in genau der selben Reihenfolge auszugeben. Da ich ein volkommener VB Noob bin und jetzt VB anwenden muss stelle ich euch mal diese Frage. Bitte habt Nachsicht mit mir, ich bin schon dabei mir Grundkenntnisse auf die ich aufbauen kann anzueignen. Zitieren Link zu diesem Kommentar
Eyeswide 10 Geschrieben 11. November 2010 Autor Melden Teilen Geschrieben 11. November 2010 Hallo Board, ich habe zwar einen Tag und viel Google, plus kurz mal nen Kollegen gebraucht. Nun ist es aber vollbracht!! So sollte es klappen!! Dim Domain Dim SourceFile Dim TargetFile strDomain = ".Domain.local" strSourceFile = "c:\script\names.txt" strTargetFile = "c:\script\IPs.txt" Const ForReading = 1 Const ForWriting = 2 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile _ (strSourceFile, ForReading) Set objLogFile = objFSO.OpenTextFile _ (strTargetFile, ForWriting, True) Do Until objTextFile.AtEndOfStream strServerName = objTextFile.Readline WScript.Echo strServerName & " " & NSlookup (strServerName & strDomain) objLogFile.WriteLine strServerName & " " & NSlookup (strServerName & strDomain) Loop objTextFile.Close() objLogFile.Close() Function NSlookup(sHost) ' Both IP address and DNS name is allowed ' Function will return the opposite Set oRE = New RegExp oRE.Pattern = "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" bInpIP = False If oRE.Test(sHost) Then bInpIP = True End If Set oShell = CreateObject("Wscript.Shell") Set oFS = CreateObject("Scripting.FileSystemObject") sTemp = oShell.ExpandEnvironmentStrings("%TEMP%") sTempFile = sTemp & "\" & oFS.GetTempName 'Run NSLookup via Command Prompt 'Dump results into a temp text file oShell.Run "%ComSpec% /c nslookup.exe " & sHost _ & " >" & sTempFile, 0, True 'Open the temp Text File and Read out the Data Set oTF = oFS.OpenTextFile(sTempFile) 'Parse the text file Do While Not oTF.AtEndOfStream sLine = Trim(oTF.Readline) If LCase(Left(sLine, 5)) = "name:" Then sData = Trim(Mid(sLine, 6)) If Not bInpIP Then 'Next line will be IP address(es) 'Line can be prefixed with "Address:" or "Addresses": aLine = Split(oTF.Readline, ":") sData = Trim(aLine(1)) End If Exit Do End If Loop 'Close it oTF.Close 'Delete It oFS.DeleteFile sTempFile If LCase(TypeName(sData)) = LCase("Empty") Then NSlookup = "" Else NSlookup = sData End If End Function Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 11. November 2010 Melden Teilen Geschrieben 11. November 2010 Muss das VB Script sein? Zitieren Link zu diesem Kommentar
Eyeswide 10 Geschrieben 11. November 2010 Autor Melden Teilen Geschrieben 11. November 2010 Ja, war Anforderung vom Kunden! Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 11. November 2010 Melden Teilen Geschrieben 11. November 2010 Ist zwar etwas Offtopic, aber hat der Kunde keine DHCP-Server ? Die aktuellen Leases kann man samt Name, MAC-Adresse und IP-Adresse auch in eine Textdatei exportieren. Der DDNS-Server sollte da auch helfen. -Zahni Zitieren Link zu diesem Kommentar
Eyeswide 10 Geschrieben 11. November 2010 Autor Melden Teilen Geschrieben 11. November 2010 Es waren etwas mehr als 150 DCs in Außenstellen. Morgen kommt das Script zur Abfrage der GC Funktion. Frag mich nicht, warum man dort die IPs der DCs nicht kennt! Zitieren Link zu diesem Kommentar
NilsK 2.961 Geschrieben 12. November 2010 Melden Teilen Geschrieben 12. November 2010 Moin, was ist denn das eigentliche Problem, das du lösen willst? Gruß, Nils Zitieren Link zu diesem Kommentar
Eyeswide 10 Geschrieben 12. November 2010 Autor Melden Teilen Geschrieben 12. November 2010 Das Problem ist schon gelöst, wir gerieten nur etwas in den Off-Topic Bereich. Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 12. November 2010 Melden Teilen Geschrieben 12. November 2010 Sind die dcs alle in einem Forest? Zitieren Link zu diesem Kommentar
Eyeswide 10 Geschrieben 12. November 2010 Autor Melden Teilen Geschrieben 12. November 2010 Ja, sind sie Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 12. November 2010 Melden Teilen Geschrieben 12. November 2010 (bearbeitet) probiers mal damit: Module Module1 Sub Main() ' DCGCs im Forest Dim myForest As System.DirectoryServices.ActiveDirectory.Forest myForest = System.DirectoryServices.ActiveDirectory.Forest.GetCurrentForest Dim myDCGC As System.DirectoryServices.ActiveDirectory.DomainController Try For Each myDCGC In myForest.FindAllGlobalCatalogs Console.WriteLine(myDCGC.Name & " " & myDCGC.IPAddress) Next Catch ex As Exception Console.WriteLine("Fehler aufgetreten: " & ex.Message) End Try End Sub End Module Das Programm listet dir alle DCGCs im Forest mit Namen und IP mittels .Net auf http://msdn.microsoft.com/en-us/library/system.directoryservices.activedirectory.domaincontroller.aspx In einem Multidomain-Forest habe ich es noch nicht getestet, sollte aber funktionieren cu blub get-DCGCs-In-Forest.zip bearbeitet 12. November 2010 von blub Zitieren Link zu diesem Kommentar
NilsK 2.961 Geschrieben 12. November 2010 Melden Teilen Geschrieben 12. November 2010 Moin, Das Problem ist schon gelöst, wir gerieten nur etwas in den Off-Topic Bereich. naja, anscheinend ja nicht, denn du sagst ja selbst: Morgen kommt das Script zur Abfrage der GC Funktion. Also wäre es interessant, die übergeordnete Aufgabe zu kennen, damit wir hier nicht ständig an Einzelheiten herumdoktern. Dazu übrigens: faq-o-matic.net Alle Global Catalog Server auflisten Oder schlicht: faq-o-matic.net Borg: AD-Standorte dokumentieren Gruß, Nils Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 12. November 2010 Melden Teilen Geschrieben 12. November 2010 (bearbeitet) Hallo, Habs nochmal mit Powershell und .Net umgesetzt. Da bekommt man die Aufgabe alle DCGCs im Forest mit IPAdresse, Name etc. zu listen, mit einem Dreizeiler hin $myForest = [system.DirectoryServices.ActiveDirectory.Forest]::getcurrentforest() $DCGCs=$myforest.findallglobalcatalogs() $DCGCs | ft Name, IPAddress, domain, osversion, roles, sitename http://msdn.microsoft.com/en-us/library/system.directoryservices.activedirectory.domaincontroller.aspx Und dieses Script listet jeden DC im Forest mit Name, IPAdress und ISGlobalCatalog auf. $objForest = [system.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest() $objForest.Domains | foreach{ $context = new-object System.DirectoryServices.ActiveDirectory.DirectoryContext("domain",$_.name) $([system.directoryservices.activedirectory.domain]::GetDomain($context).domainControllers) | foreach{ "$($_.name) $($_.ipaddress) $($_.isglobalcatalog())" } } cu blub bearbeitet 12. November 2010 von blub 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.