none
Powershell Déplacer des comptes désactivés dans une OU Disabled Accounts et les supprimer dans 90 jours RRS feed

  • Question

  • Bonjour,

    Je cherche à déplacer des comptes désactivés vers une OU disabled accounts et en rajoutant la date de désactivation dans l'extensionattribute 4; ça j'y suis arrivé avec le script suivant :

    import-module activedirectory
    $timer = (Get-Date)
    $TargetOU = "OU=Disabled Accounts,DC=domain,DC=lan"
    $DisabledAccounts = get-aduser -filter { enabled -eq $false } -SearchBase "OU=Test,OU=EMEA,DC=domain,DC=lan"
    
    ForEach ($account in $DisabledAccounts) {
    set-aduser -Identity $account.distinguishedName -add @{extensionAttribute4="$timer"}
    }
    
    ForEach ($account in $DisabledAccounts) {
    Move-ADObject -Identity $account.distinguishedName -TargetPath $TargetOU

    Par contre, j'ai tenté de supprimer les comptes qui ont été désactivés il y a 90 jours (en se référant avec la date de l'extensionattribute 4) avec le script suivant :

    import-module activedirectory
    $DaysInactive = 90
    $time = (Get-Date).Adddays(-($DaysInactive))
    $DisabledAccounts = get-aduser -filter { extensionattribute4 -lt $time -and enabled -eq $false } -SearchBase "OU=Disabled Accounts,DC=domain,DC=lan"
    
    ForEach ($account in $DisabledAccounts) {
    Remove-ADObject -Identity $account.distinguishedName
    }

    Et j'obtiens le message d'erreur suivant 

    get-aduser : Invalid type 'System.DateTime'.
    Parameter name: extensionattribute4
    At C:\removedisabledadaccounts.ps1:4 char:21
    + $DisabledAccounts = get-aduser -filter { extensionattribute4 -lt $time -and enab ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [Get-ADUser], ArgumentException
        + FullyQualifiedErrorId : Invalid type 'System.DateTime'.
    Parameter name: extensionattribute4,Microsoft.ActiveDirectory.Management.Commands.GetADUser

    Je pense que c'est un problème de format de la date, mais j'ai tenté différentes modifications, et toujours le même message. Pouvez-vous m'aider à résoudre ce problème ?

    lundi 19 juin 2017 08:05

Réponses

  • Je viens de trouver :

    Get-ADUser -Filter {enabled -eq $false} -SearchBase "OU=Disabled Accounts,DC=domain,DC=lan" -Properties extensionattribute4 | 
        Where-Object{$time -ge $_.extensionattribute4}

    et là ça fonctionne !

    • Marqué comme réponse puffydee lundi 19 juin 2017 13:06
    lundi 19 juin 2017 13:06

Toutes les réponses

  • Bonjour,

    Vous pouvez déjà utiliser des script déjà fait :

    https://gallery.technet.microsoft.com/scriptcenter/3a2377e0-4471-4eba-9dbd-5cfb9a4fdb28


    Merci de marquer comme réponse les sujets qui vous ont permis d'avancer afin que cela puisse être bénéfique aux personnes qui rencontrent le même problème.

    lundi 19 juin 2017 11:40
  • Oui, mais bon, j'essaye d'en créer par moi-même, et en même temps, c'est intéressant de savoir d'ou vient l'erreur.
    lundi 19 juin 2017 11:44
  • OK, je suis pas méga fort en powershell mais du cou pour commencer il faut vérifier le type des données.

    get-date renvoie un objet de type system.valuetype dont le nom est datetime.

    extension..4 semble etre de type string dans votre cas.

    extensionattribute4 -lt $time

    n'est donc pas possible a réaliser pour powershell car il compare un datetime avec un string...

    Pour connaitre le type, vous pouvez utiliser la méthode gettype()

     


    Merci de marquer comme réponse les sujets qui vous ont permis d'avancer afin que cela puisse être bénéfique aux personnes qui rencontrent le même problème.


    lundi 19 juin 2017 11:53
  • Je viens de trouver :

    Get-ADUser -Filter {enabled -eq $false} -SearchBase "OU=Disabled Accounts,DC=domain,DC=lan" -Properties extensionattribute4 | 
        Where-Object{$time -ge $_.extensionattribute4}

    et là ça fonctionne !

    • Marqué comme réponse puffydee lundi 19 juin 2017 13:06
    lundi 19 juin 2017 13:06