我有在另一个受信任的域中创建为联系人的域帐户,以便他们可以在其 Exchange GAL 中看到它们。
我需要一种方法来从 DomainA 中的 UserA(用户帐户)中提取电话号码字段并将其导入到 DomainB 中的 UserA(联系人)中。
我明白其中的逻辑,只是代码(vbscript/powershell/whatever)让我难以理解。
我认为的逻辑是:
- 连接到源 AD (ou/subtree)
- 从 OU 和子容器中提取用户帐户,包括名字、姓氏、显示名称和电话号码
- 连接到目标 AD (ou/subtree)
- 根据显示名称验证/匹配上面#2中的摘录中的联系人
- 使用摘录中的电话号码更新电话字段
- 记录成功和失败
有谁可以帮忙吗?
答案1
问题是如何将一侧的帐户与另一侧的帐户进行匹配。这样就可以进行提取。
关于如何在导入时进行匹配,您有什么想法吗?两者中是否有像 employeeID 这样的公共字段?否则可能需要复杂的多字段匹配。
get-aduser -filter * -searchbase "ou=users,dc=adomain,dc=com" -properties Telephonenumber|select displayname, givenname, sn, telephonenumber|export-csv phones.csv
import-csv phones.csv| foreach {
get-aduser -displayname $_.displayname -searchbase "ou=contacts dc=Bdomain,dc=com" | set-aduser -telephoneNumber $_.telephonenumber
}
答案2
只要域 A 中的所有显示名称确实与域 B 中的显示名称匹配,以下步骤就可以解决问题。
在域 A 中运行:
Get-ADUser -filter * -properties TelephoneNumber,DisplayName | select DisplayName,TelephoneNumber | export-csv users.csv
在域 B 中运行:
Import-CSV users.csv | ForEach { get-aduser -filter "displayname -eq '$($_.displayname)'" | set-aduser -replace @{telephonenumber="$($_.TelephoneNumber)"} }