假若你登入到了一個AD中你可以輕鬆的查詢AD目錄。在先前的技巧中我們闡述了一個基本指令碼。這裡有一個可以自訂根目錄的擴充方法(設定你的查詢點),它支援同步查詢(而不是遞迴到一個容器)。
它同時也闡述了怎麼從一個活動目錄尋找結果再將其轉化成使用者物件:
$SAMAccountName = 'tobias'$SearchRoot = 'LDAP://OU=customer,DC=company,DC=com'$SearchScope = 'OneLevel' $ldap = "(&(objectClass=user)(samAccountName=*$SAMAccountName*))"$searcher = [adsisearcher]$ldap$searcher.SearchRoot = $SearchRoot$searcher.PageSize = 999$searcher.SearchScope = $SearchScope $searcher.FindAll() | ForEach-Object { $_.GetDirectoryEntry() } | Select-Object -Property *
支援所有的PS版本
想要瞭解AD中帳號使用方式,如什麼時候建立\最後一次登入是時間\最後一次修改密碼等資訊,利用PowerShell,這些都可以達到.
PowerShell中Get-AdUser能查詢的資訊很多,可參考下面文章:
http://social.technet.microsoft.com/wiki/contents/articles/12037.active-directory-get-aduser-default-and-extended-properties.aspx
下面介紹用PowerShell查詢指定OU中所有帳號的建立時間\SID\上次修改密碼時間\最後一次登入時間,CMDlet如下:
Get-ADuser -searchbase ' OU=User,OU=Compay1,DC=Domain,DC=COM ' -filter * -Properties * | Select-Object Name,SID, Created,PasswordLastSet,@{n="lastLogonDate";e={[datetime]::FromFileTime($_.lastLogonTimestamp)}} | Export-CSV Accountlist.csv -NoTypeInformation -Encoding UTF8
(請自行修改OU和域資訊)
查詢出指定的結果產生.CSV檔案,用Excel開啟,進行需要的統計與分析,效果如下:
如果要查詢整個AD中的所有帳號,取消中間的-searchbase ' OU=User, OU=Compay1,DC=Domain,DC=COM '即可.