批量建立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學習筆記

相關文章
相關標籤/搜索