mexx
Goto Top

suche Batch Befehl Domänencontroller erreichbar

Ich möchte eine Batchdatei schreiben, welche verschiedene Aufgaben erfüllt, SOFERN der Domänencontroller erreichbar ist. Die Batch soll auf Laptops laufen, welche nicht immer im Hause sind und somit nicht ständig die Domäne erreichen. Mit welchen Befehl kann ich prüfen, ob die Domäne erreichbar ist? Ein Ping auf den %LOGONSERVER% kann ich nicht prüfen.

Content-Key: 96532

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

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

Member: llowartz
llowartz Sep 10, 2008 at 07:14:58 (UTC)
Goto Top
Hallo "mexx",

Du solltest in der Lage sein deine Domäne „anzupingen“, Wenn das nicht klappt könntest du immer noch den DC „anpingen“. Wenn ich bei uns im Netzwerk die Variable %LOGONSERVER% pinge, wird der DC nicht gefunden, warum auch immer. Versuch doch wie gesagt anstelle die Variable den DC selbst bzw. die Domäne anzupingen.

Grüße aus Kirn
Lukas Lowartz
Member: llowartz
llowartz Sep 10, 2008 at 07:39:00 (UTC)
Goto Top
Hallo "mexx",

in der Variable %LOGONSERVER% verbirgt sich der DC aber mit führende "\\" zeichen. Die lassen sich nicht anpingen. Der server onhe die führende "\\" Zeichen ist allerdings anpingbar.

Du könntest es hiermit versuchen: "for %i in (%LOGONSERVER%) do ping %~ni" (Ohne "")

Grüße Lukas Lowartz
Member: mexx
mexx Sep 10, 2008 at 07:52:59 (UTC)
Goto Top
Ja okay, also mit dem Ping die Konektivität herrauszubekommen, ist schon klar, aber kann ich die Ergebnissmenge des Pings auch in einen IF THEN ELSE Zweig verwenden?
Member: llowartz
llowartz Sep 10, 2008 at 09:12:24 (UTC)
Goto Top
Hallo Mexx,

ja ... das geht, und zwar über eine Errorlevel abfrage. Dafür empfehle ich dir zwei Dateien zu erstellen. Die erste die den DC anpingt (Subprozess) und die zweite die, die Ergebnisse auswertet.

Datei1
call c:\Datei2.cmd
If %Errorlevel% EQU 0 echo Ping Fehlgeschlagen >c:\Logdatei.txt

Datei2
for %i in (%LOGONSERVER%) do ping %~ni

In die Datei "Logdatei.txt" sollte stehen wenn der Ping fehlgeschlagen ist. Du kannst natürlich die Ausgabe mit Datum und und und erweitern.

Grüße
Lukas Lowartz
Member: mexx
mexx Sep 10, 2008 at 09:35:27 (UTC)
Goto Top
Ich verstehe diese Anweisung nicht ganz. For-Scheifen sind mir bekannt, aber %~ni kenne ich nicht.
Member: llowartz
llowartz Sep 10, 2008 at 10:03:44 (UTC)
Goto Top
Also .. %i stellt erst mal ein Eintrag in der Variable dar. Da ich aber den Eintrag ohne die "\\" haben mag, nutze ich die for schleife und die Darstellung von "%i" mit Hilfe der Option %~ni (Also denk das System es handelt sich bei %i um eine Datei und versuch NUR den Namen darzustellen, also ohne \\)

Weitere Optionen
%~ - Expandiert %I und entfernt alle umschließenden Anführungszeichen (").
%~fI - Expandiert %I zu einem vollständigen Dateinamen.
%~dI - erstellt nur den Laufwerkbuchstaben von %I.
%~pI - erstellt nur den Pfad von %I.
%~nI - erstellt nur den Dateinamen von %I.
%~xI - erstellt nur die Dateierweiterung von %I.
%~sI - erstellter Pfad enthält nur kurze Dateinamen.
%~aI - erstellt die Dateiattribute von %I.
%~tI - erstellt Datum und Zeit von %I.
%~zI - erstellt die Dateigröße von %I.
%~$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen angegebenen Verzeichnisse und expandiert die erste
%~dpI - erstellt den Laufwerkbuchstaben und Pfad von %I.
%~nxI - erstellt den Dateinamen und die Dateierweiterung von %I.
%~fsI - Expandiert %I zu einem vollständigen Namen, der nur kurze Dateinamen enthält.
%~dp$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen angegebenen Verzeichnisse nach %I und erstellt den Laufwerkbuchstaben und Pfad der ersten gefundenen Datei.
%~ftzaI - Expandiert %I zu einer Zeile, die der Ausgabe des DIR-Befehls entspricht. gefundene Datei %I zu dem vollständigen Dateinamen.
Member: llowartz
llowartz Sep 10, 2008 at 10:05:24 (UTC)
Goto Top
NACHTRAG ....

Wenn du die Anweisung in eine Datei speichert und dann ausführen willst, wird es so nicht fubktionieren. Dafür musst du alle "%" Zeichen mit "%%" ersetzen.

Grüße
Lukas Lowartz
Member: mexx
mexx Sep 10, 2008 at 11:56:59 (UTC)
Goto Top
Die Datei2 funktioniert nicht. Ich ersetzte diese Stringverarbeitung zunächst durch einen direkten Ping auf die IP des %LOGONSERVER%. Ich verstehe nicht, wie ich die Ergebnissmenge der Datei2 verarbeite. Was ist EQU 0? Wie weiß ich, dass kein Ping erfolgte?
Member: llowartz
llowartz Sep 10, 2008 at 12:24:51 (UTC)
Goto Top
Hi Mexx,

1. wenn die die IP direkt anpingst, brauchst du die Variable %LOGONSERVER% nicht.
2. Datei2 pingt den %LOGONSERVER% an (aber ohne die anführende "\\" Zeichen)
3. EQU ist das gleiche wie "==" (NICHT "=")
4. Wenn ein Ping erfolgt, wird keine Fehlermeldung in die Logdatei geschrieben.

Das ganze kann auch so verfeinert werden, dass mit Datum und Zeit angeben im Log gemacht werden, wann ein Ping erfolgt ist, ob er erfolgreich oder nicht und vieles mehr. Das was oben steht sollte nur ein Grundgerüst sein. Wenn du magst können wir ein solches Script gemeinsam entwickeln.

Grüße
Lukas Lowartz
Mitglied: 51705
51705 Sep 10, 2008 at 20:01:49 (UTC)
Goto Top
Hallo mexx,

if exist \\%LOGONSERVER%\NETLOGON\.

...

Grüße, Steffen