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

365bet规则 2025-10-25 23:06:32 admin 1130 787
通过 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 下次登录时是否必须更改密码。

-PasswordNeverExpires 指定帐户的密码是否永不过期。

注意,设置了密码永不过期,则不能再设置下次登录时必须更改密码。

- 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

}

相关推荐

流量快餐包
365娱乐app官方版下载

流量快餐包

07-23 192
手机短号怎么取消
best 365官网体育投注

手机短号怎么取消

07-22 650