Gibt es ein Windows-Befehlszeilenprogramm zum Überprüfen der Benutzeranmeldeinformationen?

19

Auf einer Windows - Plattform, gibt es einen Kommandozeilen - Utility , dass ich eine passieren kann username, password domain namean , um die Anmeldeinformationen zu überprüfen (oder möglicherweise einen Fehler, dass das Konto deaktiviert ist, ist nicht vorhanden oder abgelaufen ist )?

wiki
quelle
2
Warum sollten Sie die Anmeldeinformationen eines anderen als Ihrer eigenen überprüfen müssen? Als verantwortungsbewusster und seriöser SysAd müssen Sie nicht die Anmeldeinformationen eines anderen Benutzers kennen (außer vielleicht root oder den Domänenadministratorkonten).
gWaldo
6
@gWaldo: Ich bin als Software-Ingenieur hierher gekommen, der ein Installationsprogramm schreibt, das einen Benutzer nach den Anmeldeinformationen eines vorhandenen Computerkontos fragt, das wir anschließend für Win32-API-Identitätswechselaufrufe auf Code-Ebene speichern (verschlüsseln). Ich fand diese Frage und Antwort relevant und nützlich sowie legitim.
Mike Atlas
1
Ich habe Benutzer mit einem Standardkennwort eingerichtet und sie angewiesen, dieses zu ändern. Jetzt, ein paar Wochen später, möchte ich wissen, wer hat und wer nicht.
Mark Berry
@MarkBerry Sie sollten nur das Kontrollkästchen im Benutzerprofil aktivieren, damit diese bei der nächsten Anmeldung ihr Kennwort ändern müssen.
Craig
2
@Craig, auch wenn ich sie zwinge, ihr Passwort beim Anmelden zu ändern, kann dies nicht garantieren, dass sie sich eine Woche oder einen Monat später angemeldet haben. Ich brauche eine Möglichkeit, von der Kommandozeile aus zu überprüfen. Durch eine erzwungene Kennwortänderung können Remotebenutzer sogar gesperrt werden, wenn die Authentifizierung auf Netzwerkebene aktiviert ist. Und manchmal verlangt das Unternehmen (Kunde) eine sanftere Berührung als das Erzwingen einer Kennwortänderung.
Mark Berry

Antworten:

14

Sie können den net useBefehl verwenden, indem Sie den Benutzernamen und das Kennwort in der Befehlszeile (im Formular) net use \\unc\path /user:username passwordangeben und anhand der errorlevelzurückgegebenen Informationen überprüfen, ob ein Berechtigungsnachweis gültig ist.

Der runasBefehl würde auch funktionieren, außer dass Sie eine härtere Zeit haben werden, um die Ausgabe zu testen.

Das Testen eines Berechtigungsnachweises auf das Vorhandensein eines Kontos ist eine Frage der Verwendung von net useroder dsquery. Der net userBefehl sagt Ihnen nicht, ob ein Konto gesperrt ist, aber wenn Sie das lockoutTimeAttribut des Benutzerkontos abfragen , können Sie dies feststellen.

Evan Anderson
quelle
7
runas /user:username cmdöffnet ein neues Befehlszeilenfenster, als usernameob Sie das gültige Kennwort eingeben und dieser Benutzer sich an diesem Computer anmelden kann. Ich öffne normalerweise eine Shell, um zu testen, ob das Passwort immer noch die Standardeinstellung ist, basierend auf den persönlichen Daten, die ich nachschlagen kann.
PsychoData
13

In Powershell:

Function Test-ADAuthentication {
    param($username,$password)
    (new-object directoryservices.directoryentry "",$username,$password).psbase.name -ne $null
    }

PS C:\> Test-ADAuthentication "dom\myusername" "mypassword"
True
PS C:\>

Referenz: /programming/7663219/how-to-authenticate-an-user-in-activedirectory-with-powershell

user224310
quelle
Ich komme ObjectNotFound: (Test-ADAuthentication:String) [], CommandNotFoundExceptionhierher. Funktioniert dies ausschließlich auf einem Domänencontroller und nicht für lokale Konten?
SaAtomic
1
@SaAtomic Sie müssen die Funktion in Ihrer Sitzung definieren, bevor Sie sie ausführen können. Test-ADAuthenticationist nicht in Powershell eingebaut
Kolob Canyon
1
Eine Sache, die ich an Ihrer Antwort wirklich nicht mag, ist, dass Sie das Passwort nicht als sichere Zeichenfolge einlesen. Klartext-Passwörter sind immer eine schlechte Idee. $pass = Read-Host -assecurestring 'Enter password'
Kolob Canyon
1

Ich wollte nur hinzufügen, dass Sie, da AD ein LDAP-Server ist, ein LDAP-Befehlszeilentool zum 'Binden' verwenden können, um zu bestätigen, ob es aktiv ist oder nicht. Sie können sich auch als Benutzer mit höheren Rechten binden und dann mithilfe von LDAP-Prinzipien nach AD suchen.

Aber hey - nichts ist mit Powershell los!

Gerard ONeill
quelle