我一直使用 redircmp 和 redirusr 来更改域中新用户和计算机帐户的位置。它一次又一次地完美地工作。但是,我现在在 PowerShell 中完成的工作比以往任何时候都多,尽管我仍然可以通过 PowerShell 运行这些命令...... 但我有一种想要用不同的方式来做这件事的冲动......“PowerShell 方式”...... 如果有这样的方式的话。最初我以为我可以使用 Set-ADDomain,但我一直遇到障碍,想知道是否有人知道如何做得更好,如果有的话......
$ADDomain = Get-ADDomain
$NewComputersOU = Get-ADGroup <target OU>
Set-ADDomain -Identity $ADDomain.ObjectGUID -Replace @{"ComputersContainer"="$($NewComputersOU.DistinguishedName)"}
错误如下:
Set-ADDomain : The specified directory service attribute or value does not exist
我尝试了很多不同的方法来创建替换命令的哈希,但都没有任何区别,而且没有太多使用“Set-ADDomain”和“-Replace @{”方法的示例。而且,它们都没有显示更改“ComputersContainer”或“UsersContainer”值。
最后,我对域对象运行了“Get-Member”,结果显示 ComputersContainer 和 UsersContainer 都只支持“get”功能,而不支持“set”功能。所以,我觉得我最初寻找简单解决方案的方法是死路一条。
我在寻找可行的答案时偶然发现了这篇文章,但它似乎不太优雅......
https://www.open-a-socket.com/2015/02/20/redirecting-users-and-computers-containers-with-powershell/
我很好奇,我是否还缺少另一种方法,它更符合 PowerShell 命令,而且不那么笨重。提前致谢。
答案1
好的...那么...“众所周知的物体”就是...众所周知的!:)
新计算机的 GUID 始终为:“AA312825768811D1ADED00C04FD8D5CD”
并且新用户 GUID 将始终为:“A9D1CA15768811D1ADED00C04FD8D5CD”
话虽如此,我之前链接到的帖子:寻找、拆卸,然后重新组装这个众所周知的物体。而且,这样做比我认为需要的步骤多了一些。所以,我采用的解决方案步骤要少一些,精简版基本上是这样的……
$ADDomain = Get-ADDomain
$NewComputersOU = "DistinguishedName for your OU/Container of Choice"
$WellKnownComputerObject = "B:32:AA312825768811D1ADED00C04FD8D5CD:"
Set-ADObject -Identity $ADDomain -Add @{wellKnownObjects = $($WellKnownComputerObject + $NewComputersOU)} `
-Remove @{wellKnownObjects = $($WellKnownComputerObject + $ADDomain.ComputersContainer)}
这不是完整的代码……但你明白我的意思。它并不像我希望的那样优雅……但它可以在不调用 redircmp 的情况下完成工作。并不是说调用它有什么特别邪恶或错误的地方。我只是希望有一种优雅的方式可以完全通过 PowerShell 完成任务。哦,好吧。继续下一个项目!:D