gpt4 book ai didi

powershell - 在子域(跨林)中使用 Set-ADUser 和 Add-ADGroupMember 时出错

转载 作者:行者123 更新时间:2023-12-01 13:51:28 25 4
gpt4 key购买 nike

我已经构建了一个脚本,用于查询整个森林中的用户并执行一些操作:

  1. 设置扩展属性2
  2. 将用户添加到他们自己域中的域特定组
  3. 将用户添加到根域中的组

当我针对林的根域中的 GC 运行此命令时,根域中的用户处理得很好。子域中的用户仅处理步骤 #3 文件,但步骤 #1 和 #2 会导致错误。

编辑澄清:这些命令是针对根目录林中的 2012 域 Controller 运行的,该 Controller 也是全局目录服务器。我以有权访问所有子域的企业管理员身份运行这些命令。使用这些相同的凭证和相同的服务器,我可以使用 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(设置扩展属性 2)和 #2(添加他们的本地域组)时遇到错误。

错误如下:

设置扩展属性2:

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

我到处搜索,但还没有找到解决这个问题的方法。我尝试了以下(以及更多):

  1. 向每个命令添加了 -Server "ROOTGC.contoso.com:3268" 以查看是否有帮助,但它所做的只是为每个人(包括已经在工作的 root 用户)破坏了这些命令).
  2. 尝试将每个域的单独域服务器添加到命令末尾(根据我填充的变量:$domainserver),但所有子域 DC 都是 Windows 2003;服务器不接受连接。
  3. 将代码片段移动到不同的地方(降低效率,但管它呢 - 我正在尝试任何方法)。

我错过了什么?请帮帮我!!我不得不手动查看我的 CSV 文件并设置需要设置的内容,因为它必须在今晚完成,但我将在接下来的 2 周内处理数千名用户。

最佳答案

您运行它的服务器必须有一个全局目录的副本,否则它将无法解析引用。或者您必须针对目标域的 DC 运行该命令。此外,您的用户必须具有企业管理员权限才能在林的其他域中创建/修改/删除对象(或者必须在目标域中进行适当的委派)。

另一个问题是,如果没有 Active Directory Web 服务, Shiny 的 AD cmdlet 将无法工作,该服务在 Windows Server 2008 R2 之前不可用,在所有相关的 DC 上运行。不过,您可以通过自己处理外部安全主体和目录对象来解决这个问题:

$fsp = New-Object Security.Principal.NTAccount('DOM1', 'username')
$sid = $fsp.Translate([Security.Principal.SecurityIdentifier]).Value

$dn = Get-ADGroup -Identity 'groupname' | select -Expand distinguishedName
$group = New-Object DirectoryServices.DirectoryEntry("LDAP://$dn")

[void]$group.member.Add("<SID=$sid>")
$group.CommitChanges()
$group.Close()

话虽如此:您确实意识到 Windows Server 2003 将在后天达到生命周期结束,不是吗?为什么您的 DC 仍在运行那个古董版本?

关于powershell - 在子域(跨林)中使用 Set-ADUser 和 Add-ADGroupMember 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31364085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com