如何验证待同步至 Azure Active Directory 中的待删除用户信息
问题描述
在对本地域中用户、同步规则等作出修改后,在将更改应用至 Azure Active Directory(以下简称 AAD) 之前,我们可以导出所有更改信息,验证更改是否正确。但在导出后的文件只能查看到待删除用户的 GUID,无法获得用户的 display name
, UPN
等信息,以验证待删除用户是否正确。
解决方法
在 AAD Connect 运行了 Full Synchornization 之后,将更改应用至 AAD 之前,AAD Connector Space 中仍然保存了待删除用户上次同步/导入后的信息。因此用户可以在安装了 AAD Connect 的虚拟机中通过 PowerShell 命令 Get-ADSyncCSObject
,根据 csexport
导出文件中的用户 GUID 查询 AAD Connector Space 中的详细用户信息。
示例脚本如下,用户可以根据需求更改想要显示的属性
#custom object
function User()
{
param ($UPN,$name,$CN)
$user = new-object PSObject
$user | add-member -type NoteProperty -Name UserPrincipalName -Value $UPN
$user | add-member -type NoteProperty -Name DisplayName -Value $name
$user | add-member -type NoteProperty -Name DistinguishedName -Value $CN
return $user
}
$connectName = "xxxxxxxx.onmschina.cn - AAD"
$result = New-Object -TypeName System.Collections.ArrayList
$xmldatadelete = [xml](Get-Content C:\Users\contoso\Desktop\delUsers.xml)
#获取即将被删除的 user CN list
$todelete = $xmldatadelete.'cs-objects'.'cs-object'| Where-Object { $_.'export-delta-operation' -match "delete" }
#遍历每一个 user
foreach($user in $todelete){
#根据 CN 获取 AAD connector space 中留存的 user info
$CN = $user.'cs-dn'
$object = Get-ADSyncCSObject -DistinguishedName $CN -ConnectorName $connectName
#获取 user 属性,本例中选择了 UPN, display name
$xml = $object.SerializedXml
$xmldata = [xml]$xml
$info = $xmldata.'cs-objects'.'cs-object'.'synchronized-hologram'.entry.attr
$UPNattr = $info | Where-Object { $_.Name -match "userPrincipalName" }
$userUPN = $UPNattr.value
$nameattr = $info | Where-Object { $_.Name -match "DisplayName"}
$userName = $nameattr.value
$todeleteuser = user -UPN $userUPN -name $userName -CN $CN
$result.Add($todeleteuser)
}
#输出至 txt 文件中
$result | Out-File C:\todeleteusers.txt