我想知道自3个月以来哪些帐户在AD上没有关联
这是我的代码
# connexion ADSI
$objDomaine = [ADSI]’’
$objRecherche = New-Object System.DirectoryServices.DirectorySearcher($objDomaine)
$objRecherche.Filter=’(&(objectCategory=person)(objectClass=user))’
# Fichiers de sortie
$OutFile = "\\xxx\xx\Utilisateurs_inactifs.log"
remove-item $OutFile
ADD-content -path $OutFile -value "LOGIN;CN_COMPLET;LASTLOGON"
foreach ( $ADuser in $objRecherche.FindAll() )
{
$LastLogon = $ADuser.Properties[’lastlogon’]
$LastLogon = [int64]::parse($LastLogon)
$date = (Get-Date -Year 1601 -Month 1 -Day 1 -Hour 0 -Minute 0 -Second 0)
$date_derniere_connexion = $date.AddTicks($LastLogon)
#On formatte un peu le tout. On enleve l'heure et on enleve les \, des CNs.
$DATE_RESULT = $date_derniere_connexion -replace " ..:..:..",""
$RESULT = "$($ADuser.properties[’samaccountname’]);$($ADuser.path);$($DATE_RESULT)" -replace "\\\,",""
# On prend la date du jour et on retire 3 mois
$DATE3MONTHS = (get-date).addmonths(-3).toShortdateString()
# On test la date (pour enlever les occurences de non-login)
if ( $DATE_RESULT -ne '01/01/1601' )
{
# tester si la date de derniere connexion est plus vieille que 3 mois, si oui on ecrit dans le fichier.
if ( $DATE_RESULT -lt $DATE3MONTHS )
{ ADD-content -path $OutFile -value $RESULT }
}
}
在我的outfile中,我可以看到很多用户的最后连接时间不超过3个月(昨天!) 这是我的outfile的样本
xx;LDAP://CN=xx;15/09/2015
xx;LDAP://CN=xx;09/09/2015
xx;LDAP://CN=xx;16/09/2015
xx;LDAP://CN=xx;07/05/2014
xx;LDAP://CN=xx;16/09/2015
xx;LDAP://CN=xx;09/01/2015
注意:我的日期是法语版DD / MM / YYYY
答案 0 :(得分:0)
[datetime]::parse("$DATE_RESULT") # this will convert string to date. Parse for my french locale.
Why does PowerShell always use US culture when casting to DateTime?