当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 管理 OU 并移动其对象

作者:精品下载站 日期:2024-12-14 06:14:33 浏览:15 分类:玩电脑

使用 PowerShell 管理 OU 并移动其对象


组织单位 (OU) 是 Active Directory 中的一个容器,可以在其中存储用户、组和计算机以及其他 OU。每个 AD 域可以有自己的组织单位层次结构。

在本文中,您将了解OU管理以及如何使用PowerShell脚本在AD中创建、移动和删除组织单元;将组策略链接到 OU;并将计算机和用户帐户移动到另一个 OU。

PowerShell ISE 是处理 PowerShell 脚本的最佳工具。按“Windows+R”并在“运行”窗口中输入“runas /profile /user:Administrator PowerShell_ISE”,以管理员权限启动 PowerShell ISE 工具。出现提示时输入管理员密码。或者,您可以右键单击 PowerShell ISE 图标并选择“以管理员身份运行”选项。

要使用 AD 及其对象,您需要导入 Windows PowerShell 的 Active Directory 模块。在 Microsoft Windows Server 2008 R2 中,您需要通过运行以下命令来启用此模块:

Import-Module ActiveDirectory

在 Microsoft Windows Server 2012 及更高版本中,默认启用此模块。

使用 PowerShell 在 Active Directory 域中创建 OU

您可以使用 New-ADOrganizationalUnit cmdlet 并指定新 OU 对象的名称,在 Active Directory 中创建新的组织单位。默认情况下,PowerShell 将在域根目录中创建 OU。以下命令将在 DC 上创建一个名为“Regions”的 OU:

New-ADOrganizationalUnit “Regions”

如果您需要不同的 OU LDAP 路径,请使用 -Path cmdlet 参数指定其可分辨名称:

New-ADOrganizationalUnit “Regions” –Path “OU=Managers,DC=Enterprise,DC=com”

[玩转系统] 使用 PowerShell 管理 OU 并移动其对象

将 OU 移动到另一个 LDAP 地址

如果需要将 OU 移动到其他位置,请使用 Move-ADObject cmdlet。请注意,不得保护目标 OU 免遭意外删除。 如果是,请使用以下命令删除该保护:

Set-ADOrganizationalUnit -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -ProtectedFromAccidentalDeletion $False

现在您可以将 OU 移动到另一个位置:

Move-ADObject -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -TargetPath "OU=IT,DC=Enterprise,DC=Com"

重命名组织单位

要重命名组织单位,请使用 Rename-ADObject cmdlet。 -Identity 参数指定要重命名的 Active Directory 对象,并需要其可分辨名称 (DN) 或 GUID。

此命令将“Regions”OU 重命名为“Districts”:

Rename-ADObject -Identity "OU=Regions,OU=IT,DC=enterprise,DC=COM" -NewName Districts

或者,您可以使用 Get-ADOrganizationalUnit cmdlet 和 -Filter 参数;它不需要 OU 的完整 LDAP 路径。但是,该 cmdlet 将搜索整个 AD,并且该操作将应用于名称中包含搜索词的所有 OU:

Get-ADOrganizationalUnit -Filter "Name -eq 'Regions'" | Rename-ADObject -NewName Countries

将组策略应用到 OU

要将组策略分配给 OU,请使用 New-GPLink cmdlet,它基本上会在指定的组策略对象 (GPO) 和 OU 之间建立链接。您可以为链接指定以下任意属性:

  • 启用 - 如果启用链接,则在为站点、域或 OU 处理组策略时应用 GPO 设置。
  • 强制 — 如果强制链接,则无法在较低级别的容器中阻止它。
  • 顺序 - 顺序指定 GPO 设置的优先级。

以下命令将“Block Software”GPO 链接到“Districts”OU,并启用并强制执行该链接:

New-GPLink -Name "Block Software" -Target "OU=Districts,OU=IT,dc=enterprise,dc=com" -LinkEnabled Yes -Enforced Yes

[玩转系统] 使用 PowerShell 管理 OU 并移动其对象

将计算机和用户移动到新的 OU

创建 OU 并选择将其链接到 GPO 后,就可以在其中填充用户和计算机了。 PowerShell Move-ADObject cmdlet 将任何对象或对象集(例如用户、计算机、组或另一个 OU)移动到不同的 OU。 -Identity 参数指定要移动的 Active Directory 对象或容器。注意,需要输入对象的完整LDAP路径或SID;您不能使用其 SamAccountName。以下示例演示了如何将用户 (John Brown) 移动到“Districts”OU:

Move-ADObject -Identity "CN=John Brown,CN=Users,DC=enterprise,DC=com" -TargetPath "OU=Districts,OU=IT,DC=Enterprise,DC=Com"

使用相同的语法来移动计算机对象。以下命令会将计算机“R07GF”移动到“Computers”容器:

Move-ADObject -Identity "CN=R07GF,OU=CEO,DC=enterprise,DC=com" -TargetPath "CN=Computers,DC=Enterprise,DC=Com

使用 CSV 或 TXT 文件将 AD 计算机和用户移动到另一个 OU

如果您有要移动的预定义对象列表,则可以将其另存为 CSV 文件,然后将该文件导入到 Active Directory。 CSV 列表应采用以下格式:

[玩转系统] 使用 PowerShell 管理 OU 并移动其对象

使用此 PowerShell 脚本移动 CSV 文件中列出的 AD 用户帐户:

# Specify target OU. This is where users will be moved.
$TargetOU = "OU=Districts,OU=IT,DC=enterprise,DC=com"
# Specify CSV path. Import CSV file and assign it to a variable.
$Imported_csv = Import-Csv -Path "C:tempMoveList.csv"

$Imported_csv | ForEach-Object {
 # Retrieve DN of user.
 $UserDN = (Get-ADUser -Identity $_.Name).distinguishedName
 # Move user to target OU.
 Move-ADObject -Identity $UserDN -TargetPath $TargetOU

}

要移动文本文件中列出的 AD 计算机帐户,请使用以下 PowerShell 脚本:

# Specify path to the text file with the computer account names.
$computers = Get-Content C:TempComputers.txt

# Specify the path to the OU where computers will be moved.
$TargetOU = "OU=Districts,OU=IT,DC=enterprise,DC=com"
ForEach( $computer in $computers){
 Get-ADComputer $computer |
 Move-ADObject -TargetPath $TargetOU

}

从 AD 中删除 OU

Remove-ADOrganizationalUnit cmdlet 可删除 OU。不得保护 OU 免遭意外删除。您可以使用 Get-ADOrganizationalUnitSet-ADOrganizationalUnit cmdlet 删除名称中包含“Continents”的每个 OU 的意外删除选项,如下所示:

Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $False

使用以下命令从 AD 中删除名称中包含“Continents”的每个 OU:

Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Remove-ADOrganizationalUnit –Recursive

系统将提示您确认删除:

[玩转系统] 使用 PowerShell 管理 OU 并移动其对象

请注意,-Recursive 参数会删除 OU 及其所有子对象。即使子对象启用了删除保护,它们也将被删除。

结论

现在您已经了解了如何使用 PowerShell 脚本管理 Active Directory 中的 OU,您可以自动执行与 OU 管理相关的各种简单操作。在尝试这些命令之前,请确保启用 Active Directory 回收站功能,以便您可以轻松回滚任何错误删除。仔细跟踪组织部门的所有更改也是明智之举。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯