none
Powershell - Obtenir tous les comptes AD dont la case 'le mot de passe n'expire jamais" n'est pas cochée RRS feed

  • Question

  • Bonjour,

    Je cherche un script permettant d'obtenir tous les comptes AD dont la case 'le mot de passe n'expire jamais" n'est pas cochée.

    J'ai cette commande : "Search-ADAccount -PasswordNeverExpires" pour obtenir tous les comptes AD dont la case est cochée mais je voudrais avoir l'inverse.

    Merci de votre aide !

    vendredi 23 août 2019 08:55

Toutes les réponses

  • Bonjour, 

    get-aduser -filter * -properties Name, PasswordNeverExpires | where { $_.passwordNeverExpires -eq "false" } | where {$_.enabled -eq "true"}


    vote if you think useful

    vendredi 23 août 2019 08:59
  • Bonjour,

    Merci mais ça me remonte des comptes dont la case " le mot de passe n'expire jamais" est cochée.
    Il y a un mixte des 2 :/

    vendredi 23 août 2019 09:33
  • Bonjour,

    Merci mais ça me remonte des comptes dont la case " le mot de passe n'expire jamais" est cochée.
    Il y a un mixte des 2 :/

    c'est étrange !

    Pouvez-vous réjouer la commande:

    get-aduser -filter * -properties Name, PasswordNeverExpires | where { $_.passwordNeverExpires -eq "true" }


    vote if you think useful


    • Modifié F.ABASSI vendredi 23 août 2019 09:42
    vendredi 23 août 2019 09:42
  • La du coup je n'ai aucun compte avec la case "le mot de passe n'expire jamais" de décochée, c'est l'inverse.
    vendredi 23 août 2019 09:45
  • J'ai trouvé avec cette commande : Get-ADUser -filter { PasswordNeverExpires -eq $False }
    • Proposé comme réponse F.ABASSI vendredi 23 août 2019 09:58
    vendredi 23 août 2019 09:57
  • @Marwin322,

    la cmdline telle que tu l'as saisie

    Get-ADUser -Filter (PasswordNeverExpires -eq $true) 

    ne retournera pas ce que tu attends. En effet, la propriété PasswordNeverExpires ne fait pas partie de la réponse "standard" (ou par défaut) de la cmdlet Get-Aduser.Ref. : https://social.technet.microsoft.com/wiki/contents/articles/12037.active-directory-get-aduser-default-and-extended-properties.aspx

    C'est pourquoi, comme l'a précisé Fethi, il faut ajouter le paramètre -Properties PasswordNeverExpires (Name, est inutile, c'est déjà dans l'objet retourné par la cdmlet).

    Get-ADUser -Filter * -Properties Name, PasswordNeverExpires

    Ensuite, il faut filtrer, parce que là, la cmdlet retourne tous les comptes et présente (en plus des propriétés par défaut) PasswordNeverExpires. DOnc ça ne répond pas au pb.

    Toujours garder en mémoire : Filter Left, Format Right

    Alors on filtre à gauche :

    Get-ADUser -Filter (PasswordNeverExpires -eq $True) -Properties Name, PasswordNeverExpires

    Bon à ce stade tu as ce que tu veux, mais peut-être quelques propriétés sont manquantes ? Ou quelques propriétés en trop te sont retournées.

    Si ça manque, ajoute la propriété recherchée derrière le paramètre -properties

    TRUC  : si tu ne connais pas toutes les propriétés

    Get-ADUser TonCompte -filter * -properties *

    Ca va te retourner toutes les propriétés, et après tu pourras déterminer le nom de celle (s) qui te manque (nt).

    Si en trop, on va appliquer le formatage après le pipe "|"

    Get-ADUser -Filter (PasswordNeverExpires -eq $True) -Properties Name, PasswordNeverExpires | Select-Object -Property Prop1, Prop2, Prop3
    

    Naturellement, Prop1, Prop2, Prop3, doivent faire partie de ce qui est retourné par ce qui est à à gauche du pipe (|).

    Ne reste plus qu'à exporter dans le format que tu souhaites et là tu as le choix (export en .csv, .txt, .html, .xml, voire même directement vers excel si tu as le module PS qui va bien).

    TRUC :  Tu tatonnes pour mettre au point ta query ? Tu ne sais pas quelles propriétés retenir au final

    ou tu dois exporter dans plusieurs formats. Sauve ta query dans une variable et ensuite applique à cette variable les traitements que tu souhaites.

    ex. :

    $Users = Get-ADUser -Filter (PasswordNeverExpires -eq $True) -Properties Name, PasswordNeverExpires | Select-Object -Property Prop1, Prop2, Prop3
    $Users | Export-csv -Path c:\temp\Users.csv -Delimiter ";" -Encoding UTF8 -NoTypeInformation
    $Users | Out-file -FilePath c:\temp\users.txt -Encoding utf8

    Why : Faster and more Efficient


    Ceci dit la réponse de Fethi retourne également le bon résultat, elle n'est juste pas optimisée. Cela a des impacts, parfois non négligeables, sur les temps d'éxécution dans les grands environnements

    Oliv

    ____________________________

    Don't forget to mark if it helpful


    lundi 26 août 2019 14:36
  • Utilise la commande ci-dessous avec le PasswordNeverExpires à $false comme ci-dessous :

    Get-ADUser -Filter "PasswordNeverExpires -eq $false" -Properties PasswordNeverExpires

    • Proposé comme réponse JMVianney jeudi 29 août 2019 14:16
    • Modifié JMVianney jeudi 29 août 2019 14:18
    jeudi 29 août 2019 14:16
  • Utilise la commande ci-dessous avec le PasswordNeverExpires à $false comme ci-dessous :

    Get-ADUser -Filter "PasswordNeverExpires -eq $false" -Properties PasswordNeverExpires

    • Modifié JMVianney jeudi 29 août 2019 14:18
    jeudi 29 août 2019 14:17