kissmyn0se
Goto Top

Abfrage Batch-Datei ausgeben

Hallo,
ich wollte eine kleine Batch-Datei schreiben die kurz und knapp den aktuellen Stand eines Domaenenaccounts anzeigt.

Mein bisheriger Code lautet:

"
@echo off
SET /P Domain= Bitte geben Sie den Namen der Domaine ein:
echo Domaene lautet: %Domain%
SET /P User=Bitte geben Sie den Benutzernamen ein:
echo Username lautet: %User%

net user /%Domain% %User% | find "Konto aktiv"
net user /%Domain% %User% | find "Konto abgelaufen"
net user /%Domain% %User% | find "Letztes Setzen des Kennworts"
net user /%Domain% %User% | find "Kennwort läuft ab"
net user /%Domain% %User% | find "Letzte Anmeldung"


pause
"

Soweit bin ich dann schonn mal nach 10 Minuten gekommen.

Die funktion selbst klappt auch wunderbar, nur fuehrt die Batch 5x nacheinander die Abfrage fuer "Net User" aus.
Dies ist alles andere als elegant, bzw. schnell geloest!

Gibt es eine Option eimalig die Abfrage "net user /%Domain% %User%" zu starten und anschließend dann die noetigen (5) Informationen zu suchen und anzuzeigen?

Googlen konnte mir leider nicht weiterhelfen und wie man sieht bin ich ein Batch-Neuling face-smile

Achja, die Domaene muss abgefragt werden, da es 2 (eig 3, aber 3. ist nicht relevant) Domaenen gibt, in der User sich befinden koennnen.

Schon mal im vorraus vielen Dank wenn mir geholfern werden kann.

MfG

KissMyN0se

Content-ID: 194728

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

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

bastla
bastla 22.11.2012 um 13:22:59 Uhr
Goto Top
Hallo KissMyN0se und willkommen im Forum!

Du könntest eine Textdatei (im Beispiel "D:\Userinfo.txt") mit den relevanten Filtern erstellen:
Konto aktiv
Konto abgelaufen
Letztes Setzen des Kennworts
Kennwort läuft ab
Letzte Anmeldung
und dann
net user /%Domain% %User% |findstr /g:D:\Userinfo.txt
verwenden ...

Grüße
bastla
B4ZTI4N
B4ZTI4N 22.11.2012 um 13:30:56 Uhr
Goto Top
schau mal in Richtung PowerShell. DerWoWusste kann dir bestimmt helfen. Grüße bye the Way
KissMyN0se
KissMyN0se 22.11.2012 um 13:54:09 Uhr
Goto Top
Hallo und schon mal Danke face-smile

Das Ergebnis/die Ergebnisse wollte ich schon sehr gerne sofort in der Batch anzeigen lassen.

Vielen Dank fuer den Tipp mit "Findstr", dieser hat mir schonmal sehr gut weitergeholfen.

Code sieht nun so aus:

"
@echo off
SET /P Domain= Bitte geben Sie den Namen der Domaine ein:
echo Domaene lautet: %Domain%
SET /P User=Bitte geben Sie den Benutzernamen ein:
echo Username lautet: %User%

net user /%Domain% %User% | findstr "Konto aktiv","Konto abgelaufen","Letztes Setzen des Kennworts","Kennwort läuft ab","Letzte Anmeldung"

pause
"

Anzeige in der Console nun:
"
Bitte geben Sie den Namen der Domaine ein:domain
Domaene lautet: domain
Bitte geben Sie den Benutzernamen ein: Test123
Username lautet: Test123
Konto aktiv Ja
Konto abgelaufen Nie
Letztes Setzen des Kennworts 14.11.2012 15:40:51
Anmeldeskript Logon.bat
Letzte Anmeldung 16.11.2012 12:52:34
Drücken Sie eine beliebige Taste . . .
"

Dies geht auch schon gut schneller, nur ueberaus "ruckelnd", also alles andere als fluessig, vielleicht kannst du das selbe feststellen...

Aber warum wird bei der Ausgabe das "Anmeldeskript" angezeigt? Dies ist doch lt. Code s.o. nicht gewollt...

Vielleicht wegen Findstr "Letzte ANMELDUNG", waere spontan meine einzige Erklaerung, dass dann ANMELDEskript mit ausgegeben wird...

MfG

KissMyN0se
Biber
Biber 22.11.2012 aktualisiert um 14:24:37 Uhr
Goto Top
Moin KissMyN0se,

die Zeile mit dem "Anmeldeskript" wird ausgegeben, da der Suchstring "des" aus "Letztes Setzen des Kennworts" enthalten ist. ("Anmeldeskripts).

Abhilfe z.B.
net user /Domain %User% | findstr "Konto aktiv","Konto abgelaufen","Letztes Setzen","Kennwort läuft ab","Letzte Anmeldung"

-oder kürzer-
net user /Domain %user% | findstr "aktiv abgelaufen läuft Anmeldung Setzen"

Anmerkung: Die Abfrage nach %Domain% kannst du dir sparen. Der Parameter "/Domain" ist fest - da darf nichts anderes stehen als "/Domain".

Grüße
Biber
KissMyN0se
KissMyN0se 22.11.2012 um 14:43:17 Uhr
Goto Top
Die Batch schaut nun so aus:
"
@echo off
SET /P User=Bitte geben Sie den Benutzernamen ein:
echo Username lautet: %User%

net user /Domain %User% | findstr "Konto aktiv","Konto abgelaufen","Letztes Setzen Kennworts","Kennwort uft ab","Letzte Anmeldung"

pause
"

Mit "Kennwort uft ab" konnte ich "Kennwort läuft ab" umgehen, nur mit "Kennwort ab" hat's nicht geklappt, egal, funktioniert!

Jetzt klappt's zumindest komplett und viel schneller als die erste Version, zwar noch nicht ganz fluessig, aber egal face-smile

Jetzt hab ich nur noch das Problem mit der Domaene...

Kann man das iwie umgehen? Oder is das "fest" Computer abhaengig in welcher Domaene er sich befindet auf dem die Batch ausgefuehrt wird?

Besten Dank

MfG

KissMyN0se
bastla
bastla 22.11.2012 um 15:55:00 Uhr
Goto Top
Hallo KissMyN0se!

Eine weitere Möglichkeit, nicht nach jeweils einzelnen Wörtern suchen zu lassen, wäre:
net user /Domain %User% | findstr /c:"Konto aktiv" /c:"Konto abgelaufen" /c:"Letztes Setzen des Kennworts" /c:"Kennwort läuft ab" /c:"Letzte Anmeldung"
Grüße
bastla