43683
Goto Top

Batch-Datei erstellen zur DNS-Abfrage

Die Antwort zur Frage findet ihr unten in den Kommentaren.

Bis dann ..

Content-Key: 51875

Url: https://administrator.de/contentid/51875

Printed on: April 19, 2024 at 18:04 o'clock

Member: Rafiki
Rafiki Feb 16, 2007 at 13:31:00 (UTC)
Goto Top
wie wäre es mit folgender zeile in einer .bat Datei?

ipconfig /all >%%computername%%.txt

Das erstellt eine Datei, die nach dem Computer heißt. In der Datei ist die IP Adresse und alle suffixe.

gruß Rafiki
Member: bastla
bastla Feb 16, 2007 at 14:05:27 (UTC)
Goto Top
Hallo urszula-admin und willkommen im Forum!

Falls sich Rafiki etwas kurz gefasst hat: Gemeint ist, im Startup-Script für alle Computer eine Batchzeile hinzuzufügen, die die gewünschte Info je Computer einzeln oder gesammelt am Server ablegt, also etwa:
for /f "delims=" %%i in ('ipconfig /all ^|findstr "Hostname DNS-Suffix"') do echo %%i> \\server\freigabe\%computername%.txt  
um je Computer eine eigene Datei mit den Zeilen
Hostname, Primäres DNS-Suffix, DNS-Suffixliste, sowie je NIC: Verbindungsspezifisches DNS-Suffix
abzulegen. Willst Du alles in einer Datei gesammelt, könnte das so aussehen:
for /f "delims=" %%i in ('ipconfig /all ^|findstr "Hostname DNS-Suffix"') do echo %%i>>\\server\freigabe\dns-info.txt  
echo --------------------------------------------------------------------- >>\\server\freigabe\dns-info.txt
Wenn Du diese Batchzeilen für mehrere Tage im Startup-Script belässt, solltest Du für die meisten Computer die gewünschten Daten beisammen haben, bei der Variante 2 kommen dann allerdings die einzelnen Computer öfter in der Ergebnisdatei vor ...

Grüße
bastla
Mitglied: 43683
43683 Feb 16, 2007 at 14:58:15 (UTC)
Goto Top
Hi,


vielen Dank!!! ich glaube, es ging mir genau darum!;))
Ich versuche jetzt das einzuwenden....gebe dann Bescheid, ob alles glatt gegangen ist.

Grüsse
und schönes Wochenende!

Ula
Mitglied: 43683
43683 Feb 23, 2007 at 12:57:42 (UTC)
Goto Top
Hallo noch mal,

heute habe ich diese befehle eingesetzt. Im Prinzip das Script läuft durch..leider nur ich habe keinen erwarteten Effekt.
Ich möchte nähmlich sehr gerne, dass diese Batchdatei für JEDEN EINZELNEN PC die DNS-Suffixe ausliest = also wären das entsprechend 70 PC = 70 Einträge , alles in einer txt. datei.
Mein Script schreibt nur am Ende der textdatei solchen DNS-Eintrag.

Wie könnte ich das ändern?

Gruss
Ula
Member: Rafiki
Rafiki Feb 23, 2007 at 13:22:14 (UTC)
Goto Top
Hi,

ich verstehe dich leider nicht. Möchtest du eine Datei pro PC oder mehrere eintrage in einer Datei?
Poste doch mal die Batch die du jetzt verwendest.

gruß Rafiki
Mitglied: 43683
43683 Feb 23, 2007 at 14:06:43 (UTC)
Goto Top
hallo!

Ich verwende diese Befehle, die Du mir vorgeschlagen hast, also so etwa:

@echo off

echo DNS-Abfrage läuft....

REM Dieses Script sollte auf allen Rechner die DNS Einträge zeigen.


for /f "delims=, tokens=1-9" %%i in ('ipconfig /all ^|findstr "Hostname DNS-Suffix"') do echo %%i %%j %%k %%l %%m %%n %%o %%p >> \\server\freigabe\rechner-mud-alle.txt
echo --------------------------------------------------------------------------------- >> \\server\freigabe\rechner-mud-alle.txt

Das Script sollte diese Abfrage von allen Rechnern in eine "rechner-mud-alle.txt"-Datei schreiben.
Member: bastla
bastla Feb 23, 2007 at 16:41:48 (UTC)
Goto Top
Hallo urszula-admin!

Nur zur Sicherheit: Das Script muss auf den Workstations ausgeführt werden, daher oben der Vorschlag, es dem Computer-Start-Script (oder alternativ dem Anmeldescript - dann Schreibrechte für die Zieldatei beachten) hinzuzufügen.

Wenn Du zentral alle 70 Computer abfragen möchtest, müsstest Du es zB mit PsExec versuchen ...

Grüße
bastla
Mitglied: 43683
43683 Feb 27, 2007 at 17:22:12 (UTC)
Goto Top
hallo bastla!

Ja, stimmts - es ging mir darum, dass ich dieses Script nur von einem Rechner ausführen sollte, so dass ich an jeden einzelnen nicht gehen müsste.
Gibts eine andere Möglichkeit als diese mit PsExec?

Grüsse
urszula-admin
Member: bastla
bastla Feb 28, 2007 at 18:53:28 (UTC)
Goto Top
Hallo urszula-admin!

Auch wenn Du "PsExec" nicht verwenden willst, benötigst Du zunächst eine Liste der Computernamen (je Zeile ein Computername ohne "\\").

Auf Grundlage dieser Liste (zB "Rechner.txt") kannst Du folgende Batchdatei verwenden, um das unten stehende VB-Script (zu speichern unter "GetDNSInfo.vbs") auf alle Rechner anzuwenden:
del rechner-mud-alle.txt
for /f "delims=" %%i in ('type "Rechner.txt"') do CScript //nologo "GetDNSInfo.vbs" "%%i" >> rechner-mud-alle.txt  
Soferne in den Dateinamen/Pfaden keine Leerstellen enthalten sind, kannst Du die Anführungszeichen natürlich weg lassen (sind nur zur Vorsicht gesetzt, sollten aber nicht schaden).

GetDNSInfo.vbs:
If WScript.Arguments.Count < 1 Then
	WScript.Echo "Kein Computername übergeben"  
	WScript.Quit(1)
End If

strComputer = WScript.Arguments(0)
Delim = "_"  

Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  

Set colAdapters = objWMIService.ExecQuery _
    ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")  
 
For Each objAdapter in colAdapters
	Hostname = objAdapter.DNSHostName
	If Hostname = "" Then Hostname = "Hostname-NA"  
	
	DNS = ""  
	If Not IsNull(objAdapter.DNSServerSearchOrder) Then
		For i = 0 To UBound(objAdapter.DNSServerSearchOrder)
			If DNS = "" Then  
				DNS = objAdapter.DNSServerSearchOrder(i)
			Else
				DNS = DNS & ";" & objAdapter.DNSServerSearchOrder(i)  
			End If
		Next
	End If
	If DNS = "" Then DNS = "DNS-NA"  
 
	If Not IsNull(objAdapter.DNSDomain) Then
		DNSDomain = objAdapter.DNSDomain
	Else
		DNSDomain = "Domain-NA"  
	End IF
	
	DNSSuffix = ""  
	If Not IsNull(objAdapter.DNSDomainSuffixSearchOrder) Then
		For i = 0 To UBound(objAdapter.DNSDomainSuffixSearchOrder)
			If DNSSuffix = "" Then   
				DNSSuffix = objAdapter.DNSDomainSuffixSearchOrder(i)
			Else
				DNSSuffix = DNSSuffix & ";" & objAdapter.DNSDomainSuffixSearchOrder(i)  
			End If			
		Next
	End If
	If DNSSuffix = "" Then DNSSuffix = "Suffix-NA"  
	
	WScript.Echo strComputer & Delim & Hostname & Delim & DNS & Delim & DNSDomain & Delim & DNSSuffix
Next
Das Trennzeichen zwischen den einzelnen Informationen wird in der Zeile Delim = "_" festgelegt und kann natürlich geändert werden.

Das Script gibt die Informationen
Computername_Hostname_DNS-Server-Adressen_DNSDomain_DNSSuffix-Einträge
für jede Netzwerkkarte aus, wodurch für einen Rechner mehrere Einträge entstehen können. Mehrere DNS-Server-Adressen oder DNSSuffix-Einträge werden mit ";" getrennt ausgegeben.

Wenn eine Information nicht verfügbar ist, wird dies mit "NA" dokumentiert.

Grüße
bastla