2015-04-24 1 views
0

J'essaie de trouver tous les comptes temporaires dans AD qui expirent 90 jours après la création du compte. Voici ce que j'ai jusqu'ici. Je ne suis pas sûr de savoir comment calculer cela. Je ne reçois aucune sortie.comment trouver le compte qui expire 90 jours à partir de là date de création

$expireDate = (Get-ADUser -filter * -Properties accountExpires).accountExpires 
$accountExpireDate = ([System.DateTime]::FromFileTime($expireDate)).AddDays(-90).Date 

Get-ADUser -Filter {whenCreated -ge $accountExpireDate} -Properties whenCreated | select name | export-csv 'c:\temp\all_temp_users.csv'enter code here 

Répondre

0

La commande suivante retourne des objets ADUser pour user1 et user2 dans v3 PowerShell, mais nul dans powershell v2

(@("user1", "user2") | Get-ADUser).Name 

Si vous utilisez v2 Powershell, je suggère d'essayer de changer votre commande:

Get-ADUser -filter * -Properties accountExpires | Select -ExpandProperty AccountExpires 

Cela retourne un tableau d'attributs AccountExpires

Une autre question est que vous êtes essentiellement de brancher un tableau possible dans

[System.DateTime]::FromFileTime($expireDate) 

Avec $ expiredate étant ce tableau possible. Je crois que cela ne retournera qu'une fois pour le premier élément du tableau.

Un autre problème possible pourrait être que vous vérifiez si whenCreated est supérieur à la date d'expiration. Normalement, cette date va être inférieure à. Tous ensemble si vous cherchez des comptes qui ont expiré, je voudrais faire quelque chose comme:

$users = Get-ADUser -filter * -Properties AccountExpires, WhenCreated 
foreach ($user in $users) { 
    $span = [DateTime]::FromFileTime($user.AccountExpires) - $user.WhenCreated 

    if ($span.Days -eq 90) { 
     # Do Something with user that was set to expire 90 days 
    } 
}