locked
請教批量匯入AD帳號時遇到的問題? RRS feed

  • 問題

  • 1.使用內建的Dsadd工具(匯入的CSV編碼為ASCI正常,編碼為UNICODE沒有作用)

    for /f "skip=1 tokens=1-4 delims=," %a in (C:\add.csv) do dsadd user "cn=%a,ou=test,dc=test,dc=com" -display %d -upn %c -pwd %b -Email %c -disabled no

    add.csv

    Name,Password,EmailAddress,DisplayName
    test01,Aa123456,test01@test.com,張三
    test02,Aa123456,test02@test.com,李四
    test03,Aa123456,test03@test.com,王五

    當add.csv是UNICODE編碼時,完全不會跑

    當add.csv是ANSI編碼時,可以成功加入到AD裡

    改成下列方式也無作用

    for /f "skip=1 tokens=1-4 delims=," %a in (C:\add.csv) do dsadd user "cn=%a,ou=test,dc=test,dc=com" -display %d -upn %c -pwd %b -Email %c -disabled no -uc

    2.以PowerShell匯入AD帳號(使用非Administrator的管理者帳號執行PS匯入AD帳號會出現存取被拒)

    Add-PSSnapin Quest.ActiveRoles.ADManagement
    #設定預設值
    #這些設定,需要和實際相同
    $const_DC="DC=test,DC=com"
    $const_userPrincipalName="@test.com"
    $ou="test"
    
    #先取得資料
    $accountdata=Import-CSV 'C:\add.csv'
    foreach ($element in $accountdata){
    #開始新增USER帳號
    $name=$element.Name
    $container="OU=$ou,$const_DC"
    $password=$element.Password
    $title=$element.TiTle
    $userPrincipalName=$name + $const_userPrincipalName
    $mail=$element.EmailAddress
    $displayName=$element.DisplayName
    
    New-QADUser -name $name -ParentContainer $container -UserPassword $password -samAccountName $name -ObjectAttributes @{displayName=$displayName;mail=$mail;userPrincipalName=$userPrincipalName;title=$title}
    }

    此時add.csv必需為UNICODE編碼中文部份才不會變成亂碼

    但使用PowerShell出現另一個問題

    當用Administrator去執行PS時,順利新增成功

    當使用新建立的使用者加入下列管理群組

    執行PS,會一直出現存取被拒

    有試過把PS和資料夾加入該管理者帳號的"完全控制"權限,情況依舊

    上述2個問題,求解求指點


    • 已編輯 Vincent,WU 2012年10月22日 下午 04:34
    2012年10月22日 下午 04:32

解答

  • Hi Vincent

    我將你的指令碼修改如下,你參考看看:

    Add-PSSnapin Quest.ActiveRoles.ADManagement #設定預設值 #這些設定,需要和實際相同 $const_DC="DC=test,DC=com" $const_userPrincipalName="@test.com" $ou="test" #轉換資料型態(ANSI轉UNICODE)

    cat C:\add.csv > C:\add_unicode.csv # make unicode

    #先取得資料

    $accountdata=Import-CSV 'C:\add_unicode.csv' foreach ($element in $accountdata){ #開始新增USER帳號 $name=$element.Name $container="OU=$ou,$const_DC" $password=$element.Password $title=$element.TiTle $userPrincipalName=$name + $const_userPrincipalName $mail=$element.EmailAddress $displayName=$element.DisplayName New-QADUser -name $name -ParentContainer $container -UserPassword $password -samAccountName $name -ObjectAttributes @{displayName=$displayName;mail=$mail;userPrincipalName=$userPrincipalName;title=$title} }

    這樣應該就能解決ASNI會亂碼的問題

    然而,您的存取被拒的情況,應該是UAC造成的,請試著關閉UAC。


    Best Regards, Daniel Liang

    • 已標示為解答 Vincent,WU 2012年10月23日 下午 04:06
    2012年10月22日 下午 05:40

所有回覆

  • Hi Vincent

    我將你的指令碼修改如下,你參考看看:

    Add-PSSnapin Quest.ActiveRoles.ADManagement #設定預設值 #這些設定,需要和實際相同 $const_DC="DC=test,DC=com" $const_userPrincipalName="@test.com" $ou="test" #轉換資料型態(ANSI轉UNICODE)

    cat C:\add.csv > C:\add_unicode.csv # make unicode

    #先取得資料

    $accountdata=Import-CSV 'C:\add_unicode.csv' foreach ($element in $accountdata){ #開始新增USER帳號 $name=$element.Name $container="OU=$ou,$const_DC" $password=$element.Password $title=$element.TiTle $userPrincipalName=$name + $const_userPrincipalName $mail=$element.EmailAddress $displayName=$element.DisplayName New-QADUser -name $name -ParentContainer $container -UserPassword $password -samAccountName $name -ObjectAttributes @{displayName=$displayName;mail=$mail;userPrincipalName=$userPrincipalName;title=$title} }

    這樣應該就能解決ASNI會亂碼的問題

    然而,您的存取被拒的情況,應該是UAC造成的,請試著關閉UAC。


    Best Regards, Daniel Liang

    • 已標示為解答 Vincent,WU 2012年10月23日 下午 04:06
    2012年10月22日 下午 05:40
  • 我試一下
    2012年10月23日 下午 04:06