Existe-t-il un utilitaire de ligne de commande Windows pour vérifier les informations d'identification de l'utilisateur?

19

Sur une plate-forme Windows, existe-t-il un utilitaire de ligne de commande auquel je peux transmettre un username, password domain nameafin de vérifier les informations d'identification (ou éventuellement donner une erreur indiquant que le compte est désactivé, n'existe pas ou a expiré)?

wiki
la source
2
Pourquoi auriez- vous besoin de vérifier les informations d'identification de quelqu'un d'autre que les vôtres. En tant que SysAd responsable et respectable, vous n'avez pas besoin de connaître les informations d'identification de quelqu'un d'autre (sauf peut-être root ou les comptes d'administrateur de domaine).
gWaldo
6
@gWaldo: Je suis venu ici en tant qu'ingénieur logiciel qui écrit un programme d'installation qui demande à un utilisateur les informations d'identification d'un compte d'ordinateur existant, que nous stockons ensuite (chiffrées) pour les appels d'emprunt d'identité de l'API Win32 au niveau du code. J'ai trouvé cette question et cette réponse pertinentes et utiles, ainsi que légitimes.
Mike Atlas
1
J'ai configuré des utilisateurs avec un mot de passe par défaut et leur ai demandé de le changer. Maintenant, quelques semaines plus tard, je veux savoir qui a et qui n'a pas.
Mark Berry
@MarkBerry, vous devez simplement cocher la case dans le profil utilisateur pour les forcer à changer leur mot de passe lors de la prochaine connexion.
Craig
2
@Craig, même si je les oblige à changer leur mot de passe lors de la connexion, cela ne garantit toujours pas qu'ils se sont connectés une semaine ou un mois plus tard; J'ai besoin d'un moyen de vérifier à partir de la ligne de commande. Le changement de mot de passe forcé peut même bloquer les utilisateurs distants si l'authentification au niveau du réseau est activée. Et parfois, l'entreprise (client) a besoin d'un toucher plus doux que de forcer un changement de mot de passe.
Mark Berry

Réponses:

14

Vous pouvez utiliser la net usecommande, en spécifiant le nom d'utilisateur et le mot de passe sur la ligne de commande (dans le formulaire net use \\unc\path /user:username passwordet vérifier le errorlevelretour pour vérifier si une information d'identification est valide.

La runascommande fonctionnerait également, sauf que vous aurez plus de mal à tester la sortie.

Tester un justificatif d'identité pour l'existence d'un compte serait une question d'utiliser net userou dsquery. La net usercommande ne vous dira pas si un compte est verrouillé, mais interroger l' lockoutTimeattribut du compte d'utilisateur pourrait vous le dire.

Evan Anderson
la source
7
runas /user:username cmdouvrira une nouvelle fenêtre de ligne de commande comme usernamesi vous fournissiez le mot de passe valide et que l'utilisateur peut se connecter à cet ordinateur. J'ouvrirai généralement un shell pour tester que le mot de passe est toujours celui par défaut en fonction de leurs informations personnelles que je peux rechercher.
PsychoData
13

À 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:\>

Référence: /programming/7663219/how-to-authenticate-an-user-in-activedirectory-with-powershell

user224310
la source
J'arrive ObjectNotFound: (Test-ADAuthentication:String) [], CommandNotFoundExceptionici. Cela fonctionne-t-il exclusivement sur un contrôleur de domaine et non pour les comptes locaux?
SaAtomic
1
@SaAtomic Vous devez définir la fonction dans votre session avant de l'exécuter. Test-ADAuthenticationn'est pas intégré à PowerShell
Kolob Canyon
1
Une chose que je n'aime vraiment pas dans votre réponse est que vous ne lisez pas le mot de passe comme une chaîne sécurisée. Les mots de passe en texte brut sont toujours une mauvaise idée. $pass = Read-Host -assecurestring 'Enter password'
Kolob Canyon
1

Je voulais juste ajouter que puisque AD est un serveur LDAP, vous pouvez utiliser un outil de ligne de commande LDAP pour le «lier», confirmant ainsi s'il est actif ou non. Vous pouvez également vous lier en tant qu'utilisateur avec des privilèges plus élevés, puis rechercher AD en utilisant les principes LDAP.

Mais bon - rien de mal avec Powershell!

Gerard ONeill
la source