如何生成 AD 帐户配置文件中所有更改的报告
本文关键字:报告 AD 何生成 配置文件 | 更新日期: 2023-09-27 18:35:22
如何生成自特定日期以来已更新的AD中所有用户帐户的列表(也许是电子表格)?
我正在考虑用 C# 执行此操作,但任何 .net 方法都是可以接受的。
下面是上下文:我在 SharePoint 门户中使用了一个组件,该组件允许用户自行更新其 AD 配置文件。 但是,我还需要更新我的邮件列表,因此我需要知道他们何时更新他们的电子邮件地址。 因此,我需要获取更改。
AD在
高级查询方面很慢。我想从AD中提取完整的用户列表,然后在邮件列表中搜索更改(假设您在数据库中有更改)可能会更便宜。用户名的完整列表及其电子邮件应该会很快生成(当然取决于用户数量)。
编辑:一个简单的帮助程序Powershell脚本,用于快速从AD中获取用户
# Get the RootDSE
$rootDSE=[ADSI]"LDAP://RootDSE"
# Get the defaultNamingContext
$Ldap="LDAP://"+$rootDSE.defaultNamingContext
# Create the output file
$outFile=".'users'userList_{0:yyyyMMdd-HHmm}.csv" -f (Get-Date)
# Get all users
$filter="(&(ObjectClass=user))"
# create the Header for the Output File
$header="name;userPrincipalName;mail"
$timeStamp=
# Check if the file exists and if it does with the same timestamp remove it
if(Test-Path $outFile)
{
Remove-Item $outFile
}
# create the output file and write the header
Out-File -InputObject $header -FilePath $outFile
# main routine
function GetUserListToFile()
{
# create a adsisearcher with the filter
$searcher=[adsisearcher]$Filter
# setup the searcher properties
$Ldap = $Ldap.replace("LDAP://","")
$searcher.SearchRoot="LDAP://$Ldap"
$searcher.propertiesToLoad.Add("name")
$searcher.propertiesToLoad.Add("userPrincipalName")
$searcher.propertiesToLoad.Add("mail")
$searcher.pageSize=1000
# find all objects matching the filter
$results=$searcher.FindAll()
# create an empty array
$ADObjects = @()
foreach($result in $results)
{
# work through the array and build a custom PS Object
[Array]$propertiesList = $result.Properties.PropertyNames
$obj = New-Object PSObject
foreach(property in $propertiesList)
{
$obj | add-member -membertype noteproperty -name $property -value ([string]$result.Properties.Item($property))
}
# add the object to the array
$ADObjects += $obj
# build the output line
$lineOut=$obj.Name+";"+ $obj.UserPrincipalName+";"+ $obj.mail
# Write the line to the output file
Out-File -Append -InputObject $lineOut -FilePath $outFile
}
Return $ADObjects
}
# main routine
GetUserListToFile