andykb
Goto Top

Batch Anmeldescript Erweiterung Ablauf Domain PW

Hallo zusammen,
ich komme hier nicht weiter eigentlich möchte ich net user /domain | find "Kennwort läuft ab"
in die unten angegebene Abfrage bekommen, problem ist hier wohl auch das es 3 Wörter sind

Hiermit bekomme ich das richtige Token, 12. Zeile ist das Ablaufdatum da kommt aber der ganze Rest auch und kann es nicht in einer Variable speichern
for /f "skip=11 tokens=1,2,3,4" %%f in ('net user %username% /domain') do @echo %%f %%g %%h %%i  

Im Idealfall würde ich gern %%i (Ablaufdatum) in einer Variable Speichern
Wollte sowas in der Art
for /f "skip=11 tokens=1,2,3,4" %%f in ('net user %username% /domain ^| find "Kennwort läuft ab" ') do pw=%%i  
nutze ich die | ohne ^ kommt ein Fehler mit kommt nix
dann hätte ich das Datum könnte es mit Date vergleichen und im Anmelde Script Meldungen anzeigen.

Alternativ wäre mir die Ausgabe der ersten Zeile in dem Fall Zeile 12 aber auch das bekomme das so nicht hin
Vielleicht kann mir da jemand von den Fachleuten hier einwenig helfen, Danke

Andy

Content-Key: 316696

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

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

Member: andykb
andykb Oct 01, 2016 at 11:57:13 (UTC)
Goto Top
Hallo habe nochmal getestet
FOR /F "usebackq tokens=1,2,3,4 delims==" %%f IN (`net user /Domain %username% ^| findstr "Letztes"`) DO @echo %%f  
so lässt sich der Befehl zwar ausführen, bekomme auch hier nur einen Wert weil "Letztes" nur einmal vorkommt. Aber da kann ich nicht mehr über Tokens filtern muss immer auf %%f zugreifen und bekomme dann die ganze Zeile ?
Member: Friemler
Friemler Oct 01, 2016 at 16:49:46 (UTC)
Goto Top
Hallo Andy,

mein Rechner ist nicht Mitglied einer Domäne, ich kann deshalb die Ausgabe des Befehls net user /domain nicht reproduzieren. Poste doch mal die Ausgaben für alle möglicherweise auftretenden Fälle.

Alternativ kannst Du auch mal einen Blick in mein Tutorial zur FOR-Schleife werfen.

Grüße
Friemler
Member: andykb
andykb Oct 01, 2016 updated at 17:18:24 (UTC)
Goto Top
Hallo Friemler,
sowas kommt da raus

eigentlich kann man die Zeile so abfragen
net user /Domain %Username% | find "Kennwort läuft ab"
da gibt es aber Probleme weil es drei Worte sind, wenn ich "ab" eingebe bekomme ich zwei Zeilen

Die Anforderung wird auf einem Domänencontroller für Domäne name.ltd verarbeitet.

Benutzername                        Username
Vollständiger Name              Vorname Name
Beschreibung
Benutzerbeschreibung
Länder-/Regionscode             (null)
Konto aktiv                               Ja
Konto abgelaufen                    Nie

Letztes Setzen des Kennworts        07.09.2016 11:04:39
Kennwort läuft ab                           08.12.2016 11:04:39
Kennwort änderbar                           13.09.2016 11:04:39
Kennwort erforderlich                      Ja
Benutzer kann Kennwort ändern    Ja

Erlaubte Arbeitsstationen           Alle
Anmeldeskript                       Anmelde.cmd
Benutzerprofil
Basisverzeichnis
Letzte Anmeldung                    30.09.2016 15:54:56

Erlaubte Anmeldezeiten              Alle

Lokale Gruppenmitgliedschaften      
                                    *Gruppe
                                    *Gruppe
                                    *Gruppe
                                    *Gruppe
Globale Gruppenmitgliedschaften
                                    *Gruppe
                                    *Gruppe
                                    *Gruppe
                                    *Gruppe
                                    *Gruppe
Der Befehl wurde erfolgreich ausgeführt.
Member: Friemler
Solution Friemler Oct 01, 2016 updated at 18:05:00 (UTC)
Goto Top
Hallo Andy,

der FIND-Befehl betrachtet den angegebenen Suchbegriff immer als Einheit, auch wenn er Leerzeichen enthält, und sucht somit buchstabengetreu.

Der FINDSTR-Befehel betrachtet durch Leerzeichen getrennte Worte als Liste von Suchbegriffen, außer man verwendet die Optionen /L oder /C:"Suchbgriff mit Leerzeichen", wobei sich /C:"..." auch mit /R kombinieren lässt.

Dein Problem liegt wahrscheinlich darin, dass Du den Quelltext Deines Batchscripts mit der Zeichen-Codierung ANSI abgespeichert hast und dadurch Dein Suchbegriff Kennwort läuft ab in der Ausgabe von net user (ist in OEM 850 codiert) nicht gefunden wird - das Problem ist das ä in läuft.

Grundregeln:

  1. Batchscripte immer mit einem Editor schreiben, der in der Codierung OEM 850 speichern kann (z.B. Notepad++).
  2. Batchscripte zum Testen immer aus einer Konsole heraus starten und nicht per Doppelklick, damit man Fehlermeldungen auch lesen kann.
  3. Wenn das Script nicht so will wie es soll, echo off entfernen und die dann erscheinenden Ausgaben genau analysieren. Da hättest Du dann schon gesehen, dass der Suchbegriff beim FIND-Befehl irgendwie verstümmelt aussieht.

Grüße
Friemler
Member: Dani
Dani Oct 01, 2016 at 18:02:16 (UTC)
Goto Top
Guten Abend Andy,
da du nicht schreibst, was du genau vor hast, hätte ich noch einen anderen Ansatz. Warum nicht das Ganze via Powershell auf dem Domain Controller abfragen, filtern und entsprechend eine Mail verschicken?!


Gruß,
Dani
Member: andykb
andykb Oct 01, 2016 at 19:05:34 (UTC)
Goto Top
Hi Dani
Ich will beim Logon ein Msg öffnen, wo drin steht wann das passwort abläuft
Da wir viele logon scripte haben will ich es nicht mit vb machen.

Ja ich weiss es gibt ein fertiges Script für die Powershell will aber keinen Mails versenden.
Bekomme diese zeile nicht raus mit letztem PW gesetzt geht es
Member: andykb
andykb Oct 01, 2016 updated at 19:10:02 (UTC)
Goto Top
Hallo Friemler,
danke für den Hinweis das muss ich mal testen