Powershell 执行 redircmp 和 redirusr 的方式

Powershell 执行 redircmp 和 redirusr 的方式

我一直使用 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

好的...那么...“众所周知的物体”就是...众所周知的!:)

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/5a00c890-6be5-4575-93c4-8bf8be0ca8d8

新计算机的 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

相关内容