gpt4 book ai didi

powershell - 从客户端计算机修改 Active Directory 客户端 OU

转载 作者:行者123 更新时间:2023-12-02 23:59:30 25 4
gpt4 key购买 nike

我正在尝试为我的域控制计算机创建一个 powershell 启动脚本,它将计算机放入指定的 OU。我希望将变量放在本地计算机上,然后传递给远程服务器。在那里,我想在服务器上执行最后两行。

如果下面的脚本在服务器上运行,则它确实可以工作,但是如上所述,我希望能够从客户端计算机上执行它。我怎样才能做到这一点?

$computername = $env:ComputerName
$new_ou = "OU=TestOU,DC=Test,DC=Controller,DC=com"
Import-Module ActiveDirectory
Get-ADComputer $computername | Move-ADObject -TargetPath $new_ou

注意:在任何人问之前......我的目标是让 OU 由客户端 IP 地址确定。我知道有些脚本可以执行上述操作,但它们严格在服务器上运行并查询 DNS。我宁愿将此作为启动脚本在本地计算机上运行,​​以便更好地控制正在移动的计算机。在这一点上,我对解决这个问题不感兴趣。只有如何在本地机器上执行上述行的问题。

最佳答案

我假设您希望在服务器上运行最后 2 行,因为您预计您的大多数域计算机都不会安装 RSAT 工具或 AD cmdlet。

在服务器上运行它的方法是在服务器上启用 PowerShell Remoting,然后使用 Invoke-Command .

该身份验证通常使用 kerberos 完成,尽管您可以更改方法,并且您可以手动提供凭据(尽管我怀疑您是否希望在脚本中嵌入凭据)。

您需要考虑进行 AD 更改的用户需要权限才能这样做。通常那是域管理员,尽管可以委派权限。

如果您将它作为启动脚本运行,它会以 SYSTEM 的形式运行。 .该帐户在域上作为计算机帐户 (COMPUTERNAME$) 进行身份验证。这意味着计算机帐户需要权限才能移动自身,这可能意味着它需要能够将对象写入所有可能的 OU(我不记得需要哪些权限)。

因此,您要么需要将这种能力授予所有计算机(Domain Computers 中的任何计算机都可以将任何其他计算机移动到任何 OU),或者以某种方式只赋予每台计算机将自身移动到正确 OU 的能力(这权限可能仍然太多)。

另一种选择是使用 RunAs 用户在服务器上进行自定义 session 配置。您可以限制允许连接到 session 的用户(到 Domain Computers ),并限制允许的命令,以便连接的计算机只能运行一组有限的函数/cmdlet。更好的是,您可以编写自己的函数来进行更改,并且只让他们运行那个。由于 RunAs 用户是 AD 中的特权用户,因此更改将起作用,而连接用户无法直接进行更改,并且连接用户无法使用特权用户或提升他们自己的权限。请记住,在这种情况下,连接用户是计算机帐户。

我认为,如果您坚持必须从客户端计算机启动它,那么最后一种方法是做您想做的最好/最安全的方法。

重新考虑将此作为服务器端进程。 Get-ADComputer可以返回对象的 IPv4 地址,因此您可以使用它而不是 DNS。将其集中起来可以更轻松地管理和排除流程故障。

关于powershell - 从客户端计算机修改 Active Directory 客户端 OU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33879206/

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