#
#用途:列举当前域控中所有用户信息,并保存至CSV文件中。
#作者:Rootcat
#日期:2009-0-29
#
#过滤字符串
$strFilter = "(&(objectCategory=User)(logonCount>=1)(!userAccountControl:1.2.840.113556.1.4.803:=2))"
#域对象
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
#域搜索对象
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
#设置搜索对象根路径
$objSearcher.SearchRoot = $objDomain
#设置页面数
$objSearcher.PageSize = 1000
#设置搜索过滤字符串
$objSearcher.Filter = $strFilter
#获取搜索结果集
$colResults = $objSearcher.FindAll();
#用户列表对象
$userlist = @()
#循环获取用户信息
foreach ($objResult in $colResults)
{
$objItem = $objResult.Properties;
    $selected_user = New-Object psobject
    $selected_user | Add-Member NoteProperty -Name "Name" -Value $objItem.name[0]
#处理空数据
If($objItem.mail -eq $null)
{
$selected_user | Add-Member NoteProperty -Name "Email" -Value "NULL"
}else{
    $selected_user | Add-Member NoteProperty -Name "Email" -Value $objItem.mail[0]
}
#将数据对象加入用户数组
$userlist+=$selected_user
}
#直接输出信息并输出到CSV文件
$userlist | Select Name, Email |export-csv -Encoding "Unicode" F:\powershell\AdUserInfo.csv
=====================================================================
前两天在winos看了篇求助的帖子,萌发了写这个代码的想法。。。
研究了两天终于搞定了