【发布时间】:2023-04-01 22:29:02
【问题描述】:
我已经构建了一个脚本,它应该查询整个森林的用户并做一些事情:
- 设置 ExtensionAttribute2
- 将用户添加到自己域中的特定域组
- 将用户添加到根域中的组
当我对林的根域中的 GC 运行此操作时,根域中的用户被处理得很好。子域中的用户处理步骤 #3 只是文件,但步骤 #1 和 #2 会导致错误。
编辑澄清:这些命令是针对根林中的 2012 域控制器运行的,该域控制器也是全局编录服务器。我以可以访问所有子域的企业管理员身份运行这些命令。使用这些相同的凭据和相同的服务器,我可以使用 Active Directory 用户和计算机手动进行所有这些编辑。
这是我创建的脚本:
$csvpath = ".\users.csv"
$groupcbr = Get-ADGroup "CN=test group,OU=Test OU,DC=contoso,DC=com"
Import-CSV -Path $csvpath | Foreach-Object {
$userprincipalname = $_.userprincipalname
$activationkey = $_.activationkey
Get-ADUser -Filter {userprincipalname -like $userprincipalname} -SearchBase "DC=contoso,DC=com" -Server "ROOTGC.contoso.com:3268" | Foreach-Object {
$dn = $_.DistinguishedName
#Set default as root domain
$domain = "contoso"
$domainserver = "ROOTGC.contoso.com"
$groupscript = Get-ADGroup -Identity "$domain Test Group Users"
If ($dn -like "*DC=childdomain1*") {
$domain = "childdomain1"
$domainserver = "childgc1.childdomain1.contoso.com"
$groupscript = Get-ADGroup -Identity "$domain Test Group Users" -Server "ROOTGC.contoso.com:3268"
}
If ($dn -like "*DC=childdomain2*") {
$domain = "childdomain2"
$domainserver = "childgc2.childdomain2.contoso.com"
$groupscript = Get-ADGroup -Identity "$domain Office 365 Users" -Server "ROOTGC.contoso.com:3268"
}
Write-Host "$domain | $userprincipalname [$($_.SamAccountName)] will get $activationkey added, and put into groups: $groupscript | [$dn]"
#Set ExtensionAttribute2
SET-ADUSER -Identity $dn -replace @{ExtensionAttribute2="$activationkey"}
#Add the user to their own domain-based group
Add-ADGroupMember -Identity $groupscript -Members $_
#Add the user to the root domain's universal group
Add-ADGroupMember -Identity $groupcbr -Members $_
}
}
再次,根域进程中的用户就好了。子域中的用户在 #1(设置 extensionattribute2)和 #2(添加他们的本地域组)上遇到错误。
以下是错误:
设置 ExtensionAttribute2:
SET-ADUSER : A referral was returned from the server
At C:\***\Untitled1.ps1:52 char:3
+ SET-ADUSER -Identity $dn -replace @{ExtensionAttribute2="$activationkey"}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (CN=User1...contoso,DC=com:ADUser) [Set-ADUser], ADReferralException
+ FullyQualifiedErrorId : ActiveDirectoryServer:8235,Microsoft.ActiveDirectory.Management.Commands.SetADUser
加入本地域组:
Add-ADGroupMember : The server is unwilling to process the request
At C:\***\Untitled1.ps1:53 char:3
+ Add-ADGroupMember -Identity $groupscript -Members $_
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (CN=ChildDomain1 Tes...contoso,DC=com:ADGroup) [Add-ADGroupMember], ADInvalidOperationException
+ FullyQualifiedErrorId : ActiveDirectoryServer:8245,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember
我已经到处搜索了,但还没有找到任何方法来解决这个问题。我已经尝试了以下(以及更多):
- 为每个命令添加了 -Server "ROOTGC.contoso.com:3268" 以查看是否有帮助,但它所做的只是为每个人(包括已经在工作的 root 用户)破坏这些命令)。
- 尝试将每个域的单独域服务器添加到命令末尾(根据我填充的变量:$domainserver),但所有子域 DC 都是 Windows 2003;服务器不接受连接。
- 将代码片段移动到不同的地方(使其效率降低,但到底是什么 - 我正在尝试任何东西)。
我错过了什么?请帮帮我!!我不得不手动浏览我的 CSV 文件并设置需要设置的内容,因为它必须在今晚完成,但我将在接下来的 2 周内处理成千上万的用户。
【问题讨论】:
标签: powershell active-directory