J'ai besoin d'obtenir le dernier changement de mot de passe pour un groupe de comptes dans un groupe de sécurité Active Directory, et je pense que c'est quelque chose que PowerShell devrait être bon.
En ce moment, je suis déjà bloqué sur la façon de lire l'attribut pwdLastSet du compte AD que je regarde. Même exécuter quelque chose de simple comme ça:
[adsi] "LDAP://cn=user1,ou=Staff,ou=User Accounts,dc=ramalamadingdong,dc=net" | Format-List *
donne des résultats pour pwdLastSet qui ressemblent à ceci:
pwdLastSet : {System.__ComObject}
Je sens que je m'y trompe, alors quelle est la meilleure façon d'interroger puis de formater la sortie (la valeur est basée sur l'époque de Windows et pas très lisible par l'homme) de l'attribut pwdLastSet?
Les commandlets AD intégrés fournis avec Windows 7 / Windows Server 2008 R2 peuvent désormais le faire assez simplement. Sur Windows 7 à partir d'une invite Powershell:
L'attribut "PasswordLastSet" semble être une version traduite de l'attribut "pwdLastSet" réel.
la source
Il existe un moyen plus simple.
L'objet ADSI a une méthode appelée ConvertLargeIntegerToInt64. Notez qu'il s'agit d'une méthode de l'objet ADSI et non du comobject System .__ qui est renvoyé en interrogeant la valeur d'un attribut d'horodatage, donc $ user.pwdLastSet.value.ConvertLargeIntegerToInt64 () ne fonctionnera pas. Vous devez l'invoquer comme suit:
Cela vous donnera l'horodatage LDAP, qui doit être converti en une date lisible, comme expliqué par Bratch ci-dessus. Cela fonctionnera pour toute valeur d'attribut d'horodatage renvoyée par le fournisseur ADSI, et la méthode ConvertLargeIntegerToInt64 est (je crois) exposée par tout objet représentant une entrée de répertoire.
Dans l'ensemble, voici comment vous obtenez la date à laquelle le mot de passe a été défini pour la dernière fois:
la source
Voici un moyen simple d'afficher les ordinateurs AD:
la source
Installez: http://www.quest.com/powershell/activeroles-server.aspx
PowerShell ouvert
Exécutez les commandes suivantes:
add-PSSnapin quest.activeroles.admanagement
Get-QADUser | ft displayname, PasswordLastSet
La première commande charge le composant logiciel enfichable de quête que vous venez de télécharger. Vous n'avez pas besoin de le faire si vous utilisez le raccourci pour rechercher dans votre menu de démarrage. La deuxième commande obtient une liste de tous les utilisateurs et de la dernière modification du mot de passe.
la source
Ajoutez la fonction ConvertADSLargeInteger à votre script, vous pouvez l'obtenir ici:
PowerShell: convertir Active Directory IADSLargeInteger en System.Int64
Voici comment vous l'utiliseriez:
la source
vous devriez peut-être envisager d'utiliser la propriété passwordLastChanged. Regardez ici pour plus d'informations: http://www.microsoft.com/technet/scriptcenter/resources/qanda/aug06/hey0801.mspx
la source