通过 PowerShell 实现AD域用户的管理(增、删、查、改)

前言

嘿,朋友们!如果你在活动目录(AD)的用户和组管理中感到迷茫,别担心!在这个快速变化的时代,PowerShell 就是你的得力助手,能够轻松处理这些繁琐的管理任务。
在这篇文章中,我们将只需几行命令,就能轻松增、删、查、改 AD 用户,省去像侦探一样追查的烦恼。同时,通过脚本化的方式,你还可以实现批量操作,减少人为错误,提高管理的灵活性和可靠性。

1.查询域用户

# 查询账户信息
PS C:\> Get-ADUser -Identity baiyang001

DistinguishedName : CN=白阳baiyang001,OU=Users,OU=BaiYang,DC=baiyang,DC=com
Enabled           : True
GivenName         :
Name              : 白阳baiyang001
ObjectClass       : user
ObjectGUID        : 5f10d8d9-a4ad-44f1-8d63-6535279ab703
SamAccountName    : baiyang001
SID               : S-1-5-21-1483408722-1403447730-390134965-1182
Surname           : 白阳
UserPrincipalName : baiyang001@baiyang.com

# 添加显示更多属性
PS C:\> Get-ADUser -Identity baiyang001 -Properties 'Displayname','SamAccountName','mail'

DisplayName       : 白阳 BaiYang
DistinguishedName : CN=白阳baiyang001,OU=Users,OU=BaiYang,DC=baiyang,DC=com
Enabled           : True
GivenName         :
mail              : baiyang001@baiyang.org
Name              : 白阳baiyang001
ObjectClass       : user
ObjectGUID        : 5f10d8d9-a4ad-44f1-8d63-6535279ab703
SamAccountName    : baiyang001
SID               : S-1-5-21-1483408722-1403447730-390134965-1182
Surname           : 白阳
UserPrincipalName : baiyang001@baiyang.com

2. 新增域用户

# 指定登录名、对象名称CN、OU、姓、显示名称、密码、启用用户
New-ADUser -Surname "白阳" -SamAccountName "baiyang001" -Name "白阳baiyang001" -DisplayName "白阳" -UserPrincipalName "baiyang001@baiyang.org" -Accountpassword (ConvertTo-SecureString -AsPlainText "Passw0rd2025" -Force) -Enabled $true -Path "OU=Users,OU=Baiyang,DC=baiyang,DC=org"

参数说明:

- SamAccountName: 登录名,必需,最大长度为256个字符。为了与较旧的操作系统兼容,请创建一个不超过 20 个字符的 SAM 帐户名称
- Name:对象名称(name)
- Surname: 姓(sn)
- Title: 职务(title)
- DisplayName:显示名称 
- UserPrincipalName: 指定用户主体名称 (UPN),格式为 。 UPN 是管理员分配的友好名称,它比系统使用的 LDAP 可分辨名称短,更易于记忆。 UPN 独立于用户对象的可分辨名称,因此可以移动或重命名用户对象,而不会影响用户登录名。
- AccountPassword: 为帐户指定新的密码值。此值存储为加密字符串,受密码策略限制。如果密码不符合策略时,用户帐户会被禁用,但仍将创建账户。(账户禁用状态,并且下次登录时必须更改密码)
-ChangePasswordAtLogon <Boolean> 下次登录时是否必须更改密码。
-PasswordNeverExpires <Boolean> 指定帐户的密码是否永不过期。
注意,设置了密码永不过期,则不能再设置下次登录时必须更改密码。
- Enabled $true : 开启用户
- Path "OU=Users,DC=yourdomain,DC=com": 指定在其中创建新对象的 OU

3. 修改域用户信息

# 1.修改AD用户【中心】、【部门】、【职位】
Set-ADUser -Identity "baiyang001" -Company "技术研发中心" -Department "IT架构部" -Title "IT专员"

# 2.设置用户【办公地点】、【电话号码】
Set-ADUser -Identity "baiyang001" -Office "东部办公室" -OfficePhone "0123456789"


# 3.清空描述
Set-ADUser -Identity "baiyang001" -Office $Null -OfficePhone $Null

4. 移动域用户OU

# 1.获取用户完整的DN名称
$user_dn = (Get-ADUser -Identity "baiyang001").DistinguishedName
#> CN=白阳baiyang001,OU=Users,OU=BaiYang,DC=baiyang,DC=com

# 2.移动AD用户对象到新的OU
Move-ADObject -Identity $user_dn -TargetPath "OU=Users,DC=baiyang,DC=org"
  • 使用AD对象移动命令,Identity 接受的对象必须是DN(Distinguished Name)或者一个ADObject
  • 结果:用户原OU:"OU=Users,OU=BaiYang,DC=baiyang,DC=org", 新OU:"OU=Users,DC=baiyang,DC=org",即移动到上一级OU。

如果你的环境中OU比较结构化,也可以单独提取OU名称在脚本中使用。

# 提取用户的OU, 方式一
((Get-ADUser -Identity "baiyang001").DistinguishedName -Split "," |select -Index 2).Substring(3)

# 提取用户的OU, 方式二
$user_ou_name = ($user -Split "," | select -Index 2).Substring(3)

5. 修改域用户密码

# 1.更改用户密码,需要使用旧密码(验证)
Set-ADAccountPassword -Identity "baiyang001" -OldPassword (ConvertTo-SecureString -AsPlainText "Passw0rd2025" -Force) -NewPassword (ConvertTo-SecureString -AsPlainText "Passw0rd2025new" -Force)


# 2.直接重置帐户的密码, 使用此参数时,必须设置 NewPassword 参数,无需指定 OldPassword 参数。
Set-ADAccountPassword -Identity "baiyang001" -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "Passw0rd2025new" -Force)

6. 禁用域用户

# 1.禁用
Disable-ADAccount -Identity "baiyang001"

# 2.禁用并添加描述标记
Set-ADUser -Identity "baiyang001" -Description "离职被禁用" -Enabled $false

7. 启用域用户

# 1.启用
Enable-ADAccount -Identity "baiyang001"

# 2.启用并清空标记
Set-ADUser -Identity "baiyang001" -Description $null -Enabled $true

8. 删除域用户

# 1.删除用户
Remove-ADUser -Identity "baiyang002" -Confirm:$false

# 2.递归删除用户对象(包括子树)
Get-ADUser -Identity "baiyang002" | foreach { Remove-ADObject -Identity $_.ObjectGUID -Recursive -Confirm:$false}

9. PowerShell 批量操作域用户

示例1: 创建10个GGPT开头的(GGPT000-GGPT010)域用户,指定OU路径、设置统一密码,启用用户,设置描述

001..011 | foreach {
New-ADUser -Surname "GGPT$_" -SamAccountName "GGPT$_" -Name "GGPT$_" -DisplayName "GGPT$_" -UserPrincipalName "GGPT$_@sfytest.org" -Accountpassword (ConvertTo-SecureString -AsPlainText "Passw0rd2025new" -Force) -Enabled $true -Path "OU=Users,OU=BaiYang,DC=baiyang,DC=org" -Description "电商渠道部申请"
}

在这里插入图片描述

示例2: 通过CSV文件批量开通域用户

Import-Csv -Path .\addusers.csv | ForEach-Object {
try {
        # 创建新用户
        # -Surname $_.name `姓
        # -GivenName $_.GivenName `名字
        New-ADUser `
        -UserPrincipalName "$($_.identity)@baiyang.org" `
        -Name "$($_.name)$($_.identity)" `
        -Surname $_.name `
        -SamAccountName $_.identity `
        -DisplayName $_.displayname `
        -Accountpassword (ConvertTo-SecureString -AsPlainText "Passw0rd2025new" -Force) `
        -Path "OU=Users,OU=BaiYang,DC=baiyang,DC=org" `
        -Company $_.company -Departmen $_.department -Title $_.title `
        -Enabled $true
        Write-Host "创建用户: $($_.name)$($_.identity)"
    } catch {
        Write-Host "用户创建失败: $($_.identity) - $($_.Exception.Message)"
    }
}
  • 注意:此代码我已经格式化适合在ps1脚本中运行的,如果你要运行使用请自行修改。

addusers.csv文件内容如下:

identity,name,displayname,title,department,company
user001,陈小明,陈小明user001,工程师,商务部,技术中心
user002,张三,张三user002,产品设计师,产品设计部,设计中心
user003,韩信,韩信user003,人力经理,企业文化部,人力资源中心

示例3: 批量重置域用户密码

# 要操作的域用户对象,可自行增加
$Users = @("baiyang002","baiyang003","baiyang004")
# 重置密码
foreach ($user in $Users) {Set-ADAccountPassword $user -Reset -NewPassword (ConvertTo-SecureString -AsPlainText  "Passw0rd2025new" -Force)}

示例4: 批量修改域用户的对象名称

# 获取域用户的DN名称
$Users = (Get-ADUser -Identity $_.SamAccountName).DistinguishedName

# 域用户对象改名
foreach($user in $users){
    Rename-ADObject -Identity $user -NewName $newUserObjectName
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值