批量建立AD用户并将加入到指定组

目录:个人Powershell学习笔记shell

转载请注明出处:https://blog.51cto.com/3chou数组

一、需求分析

​ 如今想要在AD中批量建立用户并加入到指定的组;咱们能够对需求进行拆分。ide

​ ①、建立AD用户(New-ADUser)学习

​ ②、将建立用户添加到组(Add-ADGroupMember)编码

​ ③、批量实现(Import-CsvForEach-Objectcode

二、建立AD用户(“New-ADUser”)

​ 建立用户使用 “New-ADUser”cmdlet,下面经过一个例子来说解此命令的使用。对象

​ 例如:须要在名称为“test.local”的用的组织单位名称为“OU=suzhou;OU=IT;DC=Test;DC=Local”中建立一个名为张三的用户,须要设置哪些属性呢?blog

New-ADUser”命令主要参数说明:ip

New-ADUser utf-8

-SamAccountName <张三的登陆名>

-Surname <张三的姓>

-GivenName <张三的名>

-Name <张三的姓+名>

-UserPrincipalName <张三的登陆名加上域名>

-DisplayName <张三的帐号显示名,能够设置和姓名一致>

-Description <张三帐号的描述>

-Path <张三帐号所在的OU路径>

-AccountPassword (ConvertTo-SecureString -AsPlainText <张三帐号的密码> -Force)

-Enabled <帐号帐号的启用禁用状态,1:启用;0:禁用>

-ChangePasswordAtLogon <张三首次登陆帐号是否须要更改密码,1:须要;0:不须要>

替换为实际的值后的命令为:

New-ADUser -SamAccountName "zhangs" -Surname "张" -GivenName "三" -Name "张三" -UserPrincipalName "zhangs@test.local" -DisplayName "张三" -Description "张三的描述" -Path "OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL" -AccountPassword (ConvertTo-SecureString -AsPlainText "test@12345" -Force) -Enabled 1 -ChangePasswordAtLogon 1

命令执行结果:
批量建立AD用户并将加入到指定组

三、为AD组中添加成员(“Add-ADGroupMember”)

Add-ADGroupMember”命令主要参数说明:

Add-ADGroupMember

[-Identity] <组名>

[-Members] <用户名>

使用”[]“括起来的参数,能够省略。

Add-ADGroupMember testgroup1 "zhangs"

批量建立AD用户并将加入到指定组

四、读取CSV文件的记录并引用

4.1 读取CSV文件的行和列的属性(“Import-Csv”)

Import-Csv”命令主要参数说明:

Import-Csv

[-Path] <导入文件的路径>

-Encoding <导入文件所使用的编码,本参数被必需>

-Header <指定备用列标题行,本参数被必需>

Import-Csv .\User-Template.csv

举例说明:

​ 假设有个CSV文件,内容以下图,如何读取它的每一行内容呢?

批量建立AD用户并将加入到指定组

​ 经过Import-Csv能够导入CSV文件,导入后的CSV文件的对象类型为数组类型(“System.Array”),能够经过数组后面加序号取出数组中对应序号的对象,经过对象名.属性名能够引用属性的值。

PS C:\> (Import-Csv .\User-Template.csv).GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

PS C:\> (Import-Csv .\User-Template.csv)[0]

Description           : c6001
SamAccountName        : zhangs1
GivenName             : 张
Surname               : 三1
Name                  : 张三1
Path                  : OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL
Group1                : testgroup1
Group2                : testgroup2
Group3                : testgroup3
userPrincipalName     : zhangs1@test.local
Enabled               : 1
AccountPassword       : Test@12345
ChangePasswordAtLogon : 1

PS C:\> (Import-Csv .\User-Template.csv)[0].Path
OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL

4.2 循环引用可序列对象的值(“ForEach-Object”)

​ 假设一样有个上节中的CSV文件,文件中的对象可序列化。咱们能够经过”ForEach“和”$_“来取出当前的属性值。

注: $_“表明的是当前对象

PS C:\> $temp = Import-Csv .\User-Template.csv
PS C:\> $temp[2]

Description           : c6003
SamAccountName        : zhangs3
GivenName             : 张
Surname               : 三3
Name                  : 张三3
Path                  : OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL
Group1                : testgroup1
Group2                : testgroup2
Group3                : testgroup3
userPrincipalName     : zhangs3@test.local
Enabled               : 1
AccountPassword       : Test@12345
ChangePasswordAtLogon : 1

PS C:\> $temp[2] | foreach {$_.SamAccountName}
zhangs3
PS C:\> $temp | foreach {$_.SamAccountName}
zhangs1
zhangs2
zhangs3
zhangs4
zhangs5
zhangs6
zhangs7
zhangs8
zhangs9
zhangs10
zhangs11
zhangs12
zhangs13
zhangs14
zhangs15
PS C:\>

命令执行的截图以下:
批量建立AD用户并将加入到指定组

五、最终文件及脚本

​ 最终的文件分为2部分:模板CSV文件及PowerShell命令或脚本

5.1 模板CSV文件

​ 最终的CSV文件的以下图所示,须要注意的是,若是用中文,CSV文件须要是utf-8编码。

批量建立AD用户并将加入到指定组

注: 有些人员并非 “Group1”、“Group2”、“Group3” 都有值,经过 “Add-ADGroupMember” 命令会有报错,不过不影响总体的结果。

Description,SamAccountName,GivenName,Surname,Name,Path,Group1,Group2,Group3,userPrincipalName,Enabled,AccountPassword,ChangePasswordAtLogon
c6001,zhangs1,张,三1,张三1,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,testgroup2,testgroup3,zhangs1@test.local,1,Test@12345,1
c6002,zhangs2,张,三2,张三2,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,testgroup2,testgroup3,zhangs2@test.local,1,Test@12345,1
c6003,zhangs3,张,三3,张三3,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,testgroup2,testgroup3,zhangs3@test.local,1,Test@12345,1
c6004,zhangs4,张,三4,张三4,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,testgroup2,testgroup3,zhangs4@test.local,1,Test@12345,1
c6005,zhangs5,张,三5,张三5,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,testgroup2,testgroup3,zhangs5@test.local,1,Test@12345,1
c6006,zhangs6,张,三6,张三6,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,testgroup2,,zhangs6@test.local,1,Test@12345,1
c6007,zhangs7,张,三7,张三7,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,testgroup2,,zhangs7@test.local,1,Test@12345,1
c6008,zhangs8,张,三8,张三8,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,testgroup2,,zhangs8@test.local,1,Test@12345,1
c6009,zhangs9,张,三9,张三9,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,testgroup2,,zhangs9@test.local,1,Test@12345,1
c6010,zhangs10,张,三10,张三10,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,,,zhangs10@test.local,1,Test@12345,1
c6011,zhangs11,张,三11,张三11,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,,,zhangs11@test.local,1,Test@12345,1
c6012,zhangs12,张,三12,张三12,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,,,zhangs12@test.local,1,Test@12345,1
c6013,zhangs13,张,三13,张三13,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,,,zhangs13@test.local,1,Test@12345,1
c6014,zhangs14,张,三14,张三14,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,,,zhangs14@test.local,1,Test@12345,1
c6015,zhangs15,张,三15,张三15,"OU=SuZhou,OU=IT,DC=TEST,DC=LOCAL",testgroup1,,,zhangs15@test.local,1,Test@12345,1

5.2 PowerShell命令或脚本

最终的PowerShell命令以下:

Import-Csv '.\User-Template.csv' | ForEach-Object {New-ADUser -SamAccountName $.SamAccountName -Surname $.Surname -GivenName $.GivenName -Name $.Name -UserPrincipalName $.UserPrincipalName -DisplayName $.Name -Description $.Description -Path $.Path -AccountPassword (ConvertTo-SecureString -AsPlainText $.AccountPassword -Force) -Enabled 1 -ChangePasswordAtLogon 1 ; Add-ADGroupMember $.group1 -Member $.SamAccountName ; Add-ADGroupMember $.group2 -Member $.SamAccountName ; Add-ADGroupMember $.group3 -Member $_.SamAccountName ;}

注: 一行执行多个 PowerShell 命令,命令间用“”分号隔开。

Import-Csv '.\User-Template.csv' | ForEach-Object {New-ADUser -SamAccountName $_.SamAccountName -Surname $_.Surname -GivenName $_.GivenName -Name $_.Name -UserPrincipalName $_.UserPrincipalName -DisplayName $_.Name -Description $_.Description -Path $_.Path -AccountPassword (ConvertTo-SecureString -AsPlainText $_.AccountPassword -Force) -Enabled 1 -ChangePasswordAtLogon 1 ; Add-ADGroupMember $_.group1 -Member $_.SamAccountName ; Add-ADGroupMember $_.group2 -Member $_.SamAccountName ; Add-ADGroupMember $_.group3 -Member $_.SamAccountName ;}

批量建立AD用户并将加入到指定组
将PowerShell命令保存为“.ps1”后缀的PowerShell脚本文件,双击便可运行。

批量建立AD用户并将加入到指定组

若是执行PowerShell脚本出现如下报错,须要执行下“Set-ExecutionPolicy RemoteSigned -Force
批量建立AD用户并将加入到指定组
批量建立AD用户并将加入到指定组

转载请注明出处:https://blog.51cto.com/3chou
目录:个人Powershell学习笔记

相关文章
相关标签/搜索