[精讚] [會員登入]
8054

利用 PowerShell 指令大量建立 Windows Server 2016 帳號

利用 PowerShell 指令大量建立 Windows Server 2016 帳號

分享此文連結 //n.sfs.tw/12573

分享連結 利用 PowerShell 指令大量建立 Windows Server 2016 帳號@杜子的網管筆記
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-25 11:58:09 最後編修
2018-08-02 10:42:13 By 杜子
 

學校的  Windows Server 2008R2 因故不堪使用了,

硬著頭皮重新架設 Windows Server 2016來進行校電所有電腦的網域管理,

要做的設定還真是不少,

其中, 令人較頭大的是帳號建置問題, 教師加學生近2000人.

幸好 Windows 的 PowerShell 指令可以解決這個問題.

1. 先準備 PowerShell 程式

我在 D:\ 建立了一個名為  CreateAccount 的資料夾, 然後把這支程式儲存成 go.ps1 檔

底下是建帳號的程式

#網域設定,需要和實際相同 
$const_DC="DC=fnjh,DC=tc,DC=edu,DC=tw" 
$const_userPrincipalName="@fnjh.tc.edu.tw" 
#先建立帳號的 CSV 檔應有欄位名稱 name (帳號) password (密碼) container (放在哪個ou tmpTeaches或 tmpStudents 之後再自行移動) description (描述) displayName (顯示姓名) sn(姓) givenName(名) group(群組)
#注意! CSV 檔必須為 UTF-8 字碼
#以參數的方式帶入 CSV 檔
if (!$args) { 
    Write-Host "需要傳入 CSV 檔案參數!"


ELSE
{

#載入 CSV 檔
$accountdata=Import-CSV $args
  foreach ($element in $accountdata){ 
    
    #USER帳號 
    $name=$element.name 
    #OU
    $ou=$element.container
    $container="OU=$ou,$const_DC"
    #帳號@網域
    $userPrincipalName=$name + $const_userPrincipalName
    #密碼處理,要編碼
    $password=$element.password 
    $pass = ConvertTo-SecureString $password -AsPlainText -Force
    #中文名
    $description=$element.description 
    $displayName=$element.displayName 
    #群組
    $group=$element.group
    #辦公室
    $physicalDeliveryOfficeName=$element.physicalDeliveryOfficeName
    #新增帳號
    #New-ADUser -Name $name -AccountPassword $pass -Path $container -Enabled 1 -ScriptPath "login.vbs" -HomeDrive "Z:" -HomeDirectory "\\nas\home" -SamAccountName $name -UserPrincipalName $userPrincipalName -OtherAttributes @{'description'=$description;'displayName'=$description;'physicalDeliveryOfficeName'=$physicalDeliveryOfficeName }
    New-ADUser -Name $name -AccountPassword $pass -Path $container -Enabled 1 -ScriptPath "login.vbs" -SamAccountName $name -UserPrincipalName $userPrincipalName -OtherAttributes @{'description'=$description;'displayName'=$description;'physicalDeliveryOfficeName'=$physicalDeliveryOfficeName }
    #把帳號加入群組
    Add-ADGroupMember -Identity $group -Members $name
  } #end for
} # end if else

 

 

 

2. 利用 Excel 整理帳號, 注意, 第一行是標題, 不能改上面的英文標題名稱, 那是要讓 PowerShell 判別用的

name : 帳號

password : 預設帳號

description 及 displayName 都是要顯示在 AD 裡的中文名

container 建好的帳號要放在哪個 OU , 基本上我都是先集中放在某個 OU , 建好後再去移動

group : 帳號要加到哪個群組

physicalDeliveryOfficeName : 辦公室  , 如果是學生, 我就填入班級

整理好後, 要另存成 CSV 檔

由於 Excel 另存的 CSV 檔, 字碼是 BIG-5 

所以, 要利用文字編輯程式, 以下是用 NotePad++ 為例, 把字碼轉換成 UTF-8 , 這樣 PowerShell 在運作時, 中文才會正常.

裡面有些中文字在 Excel 轉存時會變成  ? , 此時也順便修正.

轉存完會看到 D:\CreateAccount 裡有這些檔

3. 開啟 PowerShell  準備建帳號了

依序下指令進行帳號建立 , 如下圖:

 

建立完畢, 在 tmpStudents 這個 OU 裡, 就可以看到大量帳號被建立了. 

END

你可能感興趣的文章

Windown 10 新增「微軟新倉頡」輸入法的方法 Windown 10 的中文輸入法一直是我覺得微軟做得很爛的一個地方, 微軟注音輸入法還好,有細部的選項可以進行設定,

讓 Windows Server 2016 的 IIS 10 支援 PHP 因為在研究如何利用 PHP 與 Windows AD 進行 LDAPS 連線,外部的 Linux 或 FreeBSD 跑

利用 PowerShell 指令大量建立 Windows Server 2016 帳號 利用 PowerShell 指令大量建立 Windows Server 2016 帳號

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

Yii2 使用 MODAL class 呈現內容時,如何防止滑鼠失焦導致頁面自動關閉 Yii2 使用 MODAL class 呈現內容時,如何防止滑鼠失焦導致頁面自動關閉

將資料由SFS3 移機到 SFS3U 如果您是 SFS3 的使用者,架了 SFS3U ,資料當然得轉移過來才有意義呀!

【停課不停學】在家如何進行 SSL VPN 連線 因為疫情導致的停課 許多老師都在家使用線上教學了 但有很多資料是放在學校的, 要如何遠端取得呢? SSL VPN 連線變

【停課不停學】111學年入學新生線上教學說明 此篇文章是針對110學年入學新生的線上教學說明