link do strony el12

Jak dodać konta domenowe AD skryptem powershell?

W pracy administratora IT czasem pojawiają się tematy, które teoretycznie nie powinny wystąpić, dbamy o serwer domenowy, wszystko jest ok, ale np. zmiana organizacji firmy powoduje, że użytkownicy, którzy byli poza domeną muszą mieć konta na serwerze.

Oczywiście żaden szanujący się admin choćby miał dodać kilka kont nie zrobi tego ręcznie :)

  1. Użytkowników do Domeny można dodać skryptem Powershella, który wczyta ich z zewnętrznego pliku csv. W skrypcie musimy zdefiniować pola Active Directory, które maja się przypisać z pliku. Chcemy Imię, nazwisko, nazwę firmy, email, nazwa użytkownika w domenie, nazwa-login, miasto, hasło. Hasło musi spełniać normy domenowe - jeśli mamy takie włączone czyli np. min 8 znaków, duże i małe litery, cyfry, znaki specjalne. W skrypcie musimy podać ścieżkę do kontenera domeny OU (Organisation Unit) do którego chcemy dodać konta. Podajemy również czy konto ma być aktywne po stworzeniu oraz czy wymagana jest zmiana hasła podczas pierwszego logowania. W takim skrypcie można zdefiniować bardzo wiele innych opcji, jednak te podstawowe w zupełności wystarczą. A im więcej zaczniemy definiować, tym większa szansa na błędy - które i tak wystąpią nawet po poprawnym wykonaniu skryptu :)
  2. Przygotowujemy plik skryptu oraz plik csv z użytkownikami. W pliku ze skryptem możemy zmienić rozszerzenie na ps1 jeśli chcemy go móc uruchomić kliknięciem. 
  3. Możemy uruchomić Powershella (jako administrator) i przeciągnąć tam plik skryptu - powinien się uruchomić.
  4. Ja jednak wolę uruchomić w konsoli (jako admin) kod, mogę go wtedy zmodyfikować w razie potrzeby. Jak widzimy konto Jan Kowalski dodało się prawidłowo do kontenera Moodle w OU Pracownicy.
  5. Możemy sprawdzić poprawność przypisania pól AD z pliku csv. Jak widać imię, nazwisko, email, firma, adres, login, wszystko przebiegło poprawnie mimo, iż Powershell rzucił jakieś małe błędy.
  6. kod skryptu:
    $UserList = Import-Csv -Path 'C:\it\users.csv' 

    foreach ($User in $UserList) {

    $Attributes = @{

    Enabled = $true
    ChangePasswordAtLogon = $false
    Path = "OU=Moodle,OU=!Pracownicy,DC=el12,DC=opole"

    Name = "$($User.First) $($User.Last)"
    UserPrincipalName = $User.UserPrincipalName
    SamAccountName = $User.SamAccountName
    GivenName = $User.First
    Surname = $User.Last
    EmailAddress = $User.EmailAddress
    DisplayName = "$($User.First) $($User.Last)"
    City = $User.City
    Company = $User.Company
    AccountPassword = $User.AccountPassword | ConvertTo-SecureString -AsPlainText -Force
    }

    New-ADUser @Attributes

    }

 Autor: rc2