1. OU 概念与设计原则
组织单位(Organizational Unit,OU)是 AD 域内的逻辑容器,用于将用户、计算机、组等对象分组管理。OU 是链接组策略(GPO)的最小作用域。
OU 设计原则
| 原则 | 说明 | 示例 |
|---|---|---|
| 扁平化 | OU 层级不超过 3-4 层 | IT → Servers → WebServers(避免过深嵌套) |
| 基于管理需求 | 根据 GPO 应用需求划分 | IT信息部 OU 需要 RDP 策略,财务部 OU 需要严格的密码策略 |
| 稳定优先 | 避免频繁调整 OU 结构 | 先规划好,不要轻易移动大量对象 |
| 避免按地理位置 | 用站点(Site)管理物理位置 | 不要为北京、上海各建一个顶层 OU |
💡 推荐的 OU 结构
基于部门或职能划分:OU=IT信息部, OU=财务部, OU=业务部, OU=生产部, OU=人事部, OU=Computers, OU=Groups 等。每个部门 OU 下再分 Users 和 Computers 子 OU。
2. 创建与管理 OU
1
打开Active Directory 用户和计算机(dsa.msc)
2
右键点击域名 iehang.cn → 新建 → 组织单位
3
输入 OU 名称(如 "IT")→ 确定。可以取消勾选"防止容器被意外删除"方便实验
PowerShell - 创建 OU
# 创建部门 OU
New-ADOrganizationalUnit -Name "IT信息部" -Path "DC=iehang,DC=cn" -Description "IT信息部"
New-ADOrganizationalUnit -Name "财务部" -Path "DC=iehang,DC=cn" -Description "财务部"
New-ADOrganizationalUnit -Name "业务部" -Path "DC=iehang,DC=cn" -Description "业务部"
New-ADOrganizationalUnit -Name "生产部" -Path "DC=iehang,DC=cn" -Description "生产部"
New-ADOrganizationalUnit -Name "人事部" -Path "DC=iehang,DC=cn" -Description "人事部"
# 创建子 OU(以 IT信息部 为例,其他部门类似)
New-ADOrganizationalUnit -Name "Users" -Path "OU=IT信息部,DC=iehang,DC=cn"
New-ADOrganizationalUnit -Name "Computers" -Path "OU=IT信息部,DC=iehang,DC=cn"
New-ADOrganizationalUnit -Name "Users" -Path "OU=财务部,DC=iehang,DC=cn"
New-ADOrganizationalUnit -Name "Users" -Path "OU=业务部,DC=iehang,DC=cn"
New-ADOrganizationalUnit -Name "Users" -Path "OU=生产部,DC=iehang,DC=cn"
New-ADOrganizationalUnit -Name "Users" -Path "OU=人事部,DC=iehang,DC=cn"
# 禁止删除保护(默认启用,实验时建议关闭)
Set-ADOrganizationalUnit -Identity "OU=IT信息部,DC=iehang,DC=cn" -ProtectedFromAccidentalDeletion $false
# 列出所有 OU
Get-ADOrganizationalUnit -Filter "*" | Format-Table Name, DistinguishedName"
3. 移动对象到 OU
PowerShell - 移动对象
# 将用户移动到指定 OU
Move-ADObject -Identity "CN=zhangsan,CN=Users,DC=iehang,DC=cn" `
-TargetPath "OU=Users,OU=IT信息部,DC=iehang,DC=cn"
# 批量移动:将所有 IT 部门用户移到 IT OU(假设 Department 属性已设置)
Get-ADUser -Filter { Department -eq "IT" } | ForEach-Object {
Move-ADObject -Identity $_.DistinguishedName -TargetPath "OU=Users,OU=IT信息部,DC=iehang,DC=cn"
}
# 将计算机移到指定 OU
Get-ADComputer -Filter { Name -like "IT-*" } | ForEach-Object {
Move-ADObject -Identity $_.DistinguishedName -TargetPath "OU=Computers,OU=IT信息部,DC=iehang,DC=cn"
}
4. GPO 链接到 OU
PowerShell - 链接 GPO 到 OU
# 创建新 GPO
New-GPO -Name "IT信息部密码策略" -Comment "IT信息部专用密码策略"
# 链接到 IT OU
New-GPLink -Name "IT信息部密码策略" -Target "OU=IT信息部,DC=iehang,DC=cn" -LinkEnabled $true
# 设置链接顺序
Set-GPLink -Name "IT信息部密码策略" -Target "OU=IT信息部,DC=iehang,DC=cn" -Order 1
# 查看 OU 上的 GPO 链接
Get-GPInheritance -Target "OU=IT信息部,DC=iehang,DC=cn"
5. 权限委派
通过权限委派,可以让非域管理员管理指定 OU 下的对象(如重置密码、创建用户)。
PowerShell - 委派 OU 控制权
# 授予用户 "ITAdmin" 在 IT OU 上重置密码的权限
$user = Get-ADUser "ITAdmin"
$ou = Get-ADOrganizationalUnit "IT"
$acl = Get-Acl $ou.DistinguishedName
$rule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
$user.SID, "ExtendedRight", "Allow",
"00299570-246d-11d0-a768-00aa006e0529" # Reset Password GUID
)
$acl.AddAccessRule($rule)
Set-Acl $ou.DistinguishedName $acl
6. ADSI Edit 高级管理
ADSI Edit 是低级 AD 编辑工具,可以直接操作 AD 属性。使用 adsiedit.msc 打开。
⚠️ 警告
ADSI Edit 修改的属性会直接写入 AD 数据库,没有确认对话框。错误修改可能导致 AD 功能异常。仅在有明确需求时使用,修改前建议备份。
7. 常见问题
Q1:误删了 OU 怎么办
如果启用了 AD 回收站(参见第 8 篇),可以通过 Get-ADObject -Filter * -IncludeDeletedObjects 找回并恢复。否则需要使用 ntdsutil 授权还原。
Q2:OU 数量有限制吗
没有硬性限制,但 OU 层级过深会增加管理复杂度和 GPO 应用时间。建议不超过 3-4 层。