AUTOMATYZACJA TWORZENIA UŻYTKOWNIKÓW W WINDOWS SERVER 2019

Wprowadzenie do lekcji

1. Tworzenie wielu użytkowników.
Administratorzy czasami muszą stworzyć setki kont użytkowników i korzystają wtedy z mechanizmów służących do automatyzacji procesu tworzenia dużej liczby obiektów Active Directory. Przykładowe narzędzia, które służą do tego celu to:
ldifde.exe - jest narzędziem, które służy do tworzenia i modyfikacji obiektów w AD za pomocą importu z pliku, w którym przygotowane są odpowiednie wpisy
csvde.exe - jest narzędziem, które służy do tworzenia obiektów w AD za pomocą importu z pliku CSV,
Windows PowerShell - jest narzędziem, które służy do tworzenia obiektów w AD za pomocą importu z pliku CSV,
skrypty VBS - tworzony jest skrypt w formacie vbs do tworzenia obiektów.
W naszym przypadku do procesu automatyzacji wykorzystamy ldifde.exe oraz Windows PowerShell.

I. Korzystanie z narzędzia ldifde.exe.

Narzędzie to umożliwia tworzenie, modyfikowanie i usuwanie obiektów, a także eksportowanie do pliku informacji dotyczących użytkowników czy grup do innych aplikacji lub usług.


Pomoc do polecenia ldifde

Aby sprawdzić możliwości programu wystarczy uruchomić PowerShell i wpisać:
$ ldifde Dostaniemy zwrot informacji jakich parametrów możemy używać przy stosowaniu tego polecenia

Eksport informcji o naszej całej domenie

Podstawowe parametry, które my będzimy stosować to np:
i - tryb importu (eksport jest domyślnie)
s - nazwa serwera (w naszym przypadku mamy tylko jeden serwer w domenie, więc ten parametr jest zbędny)
f - nazwa pliku (zostawiamy domyślną lokalizację pliku, albo możemy podać, gdzie ma on być wyeksportowany)
r - służy do filtrowania obiektów
d - miejsce przeszukiwania LDAP
Spróbujemy teraz wyeksportować informacje o naszej domenie. Użyjemy polecenia:
$ ldifde -f domena.txt Operacja zakończyła się sukcesem, wyeksportowana została informacja o 256 obiektach naszej domeny, a plik znajduje się w domyślnej lokalizacji: C:\Users\Administrator

Przegląd wyeksportowanej informacji

Sprawdzamy teraz nasz plik domena.txt. U góry mamy informację o tym, że dotyczy do domeny elektronik.local

Eksport informcji o konkretnym obiekcie

Jeśli chcemy uzyskać informacje o konkretnym obiekcie (np. jakimś użytkowniku), to najpierw sprawdzamy jego pełną nazwę DN np. poleceniem:
$ dsquery user
a następnie wyeksportujemy informcje tylko o nim, dodatkowo umieszczając je w pliku user.txt "na pulpicie". Użyjemy do tego polecenia:

$ ldifde -f C:\Users\Administrator\Desktop\user.txt -d "CN=James JB. Bond03,OU=Informatycy,DC=elektronik,DC=local"

Operacja zakończyła się sukcesem, wyeksportowana została informacja o 1 obiekcie, a plik znajduje się w lokalizacji: C:\Users\Administrator\Desktop

Przegląd wyeksportowanej informacji

I ponownie sprawdzamy czy plik user.txt znajduje się "na pulpicie" oraz jaką ma zawartość

Eksport informcji z zastosowaniem filtrowania typu obiektów

Używając filtrowania możemy wyeksportować informacje np. tylko o użytkownikach znajdujących się w naszej domenie. Polecenie będzie miało postać:
$ ldifde -f users.txt -r objectClass=user
Operacja zakończyła się sukcesem, wyeksportowana została informacja o 10 obiektach

II. Tworzenie i usuwanie kont użytkowników za pomocą LDIFDE.

To polecenie ma ograniczone możliwości (np. nie da się ustawić hasła), ale można zakładać konta dla większej grupy użytkowników. Należy uworzyć plik z konkretnymi parametrami, a następnie zaimportować go poprzez ldifde.


Selekcjonowanie wyeksportowanych informcji

Tworząc taki plik należy poprawnie go wypełnić i pamiętać o tym, aby nie zrobić jakiejś literówki. Dodatkowo zbędne "entery" i "spacje" też mogą być powodem błędów zwaracanych przez PS. Aby tego uniknąć można wyeksportować sobie do pliku informcje o już istniejącym koncie, a następnie dokonać w nim odpowiednich zmian, zostawiając tylko te parametry, które nas interesują. Skorzystamy z pliku user.txt, w którym mamy informacje o użytkowniku James JB. Bond03
Pozostawimy w naszym pliku tylko te wpisy, które zostały zaznaczone na zielono. Oczywiście zmienimy indeksację konta (numery przy loginach, nazwach itp.) ponieważ dostaliśbyśmy zwrot informacji, że taki obiekt już istnieje.

Zawartość pliku do importu

Po usunięciu zbędnych wpisów i małych zmianach nazewnictwa nasz plik powinien mieć taką zawartość jak wyżej. Opis przykładowo użytych parametrów jest następujący:
DN: CN: James JB. Bond001,CN=Users,DC=elektronik,DC=local - nazwa DN obiektu
changetype: add - dodawanie obiektu
y objectClass: user - typ obiektu
CN: James JB. Bond001 - pełna nazwa użytkownika
sn: Bond001 - nazwisko givenName: James - imię
initials: JB
userAccountControl: 544 - włączenie konta (546 - wyłączenie)
sAMAccountName: James JB. Bond001 - nazwa konta
userPrincipalName: [email protected] - nazwa główna (login) użytkownika

Import danych z pliku

Wpisujemy teraz polecenie:
$ ldifde -i -f c:\Users\Administrator\Desktop\user.txt
i powinniśmy uzyskać powyższy efekt

Sprawdzenie parametrów utworzonego konta

I sprawdzamy czy nasze konto faktycznie zostało utworzone, z przykładowymi parametrami

Zawartość pliku do utworzenia 10 kont

Ponieważ poprzedni plik zadziałał, to teraz utworzymy więcej kont użytkowników (10). Powielamy 10-krotnie zawartość naszego pliku user.txt, zmieniając w każdym bloku albo nazwy użytkowników i powiązanych z nimi wpisów, albo tylko indeksy przy nazwisku np. Bondj002, Bondj003 itp. Dodatkowo zrobimy pięć kont wyłączonych, stosując parametr userAccountControl: 546. Powinno to wyglądać jak wyżej

Import danych z pliku

Wpisujemy teraz polecenie:
$ ldifde -i -f c:\Users\Administrator\Desktop\user.txt
i powinniśmy uzyskać powyższy efekt z informacją, że pomyślnie zmodyfikowano 10 wpisów

Sprawdzenie utworzonych kont

Sprawdzamy jeszcze czy nasze konta faktycznie zostały utworzone i widzimy, że wszystko się zgadza. Na żółto zaznaczone zostały konta wyłączone

Zmiana zawartości pliku do usunięcia 10 kont

Aby usunąć nasze obiekty przy użyciu ldifde, wystarczy zmienić w pliku (albo stworzyć nowy) parametr "add" na "delete" (pozostałe atrybuty należy wykasować). Oczywiście sens kasowania plików w taki sposób jest wątpliwy, ale jak ktoś bardzo chce...

Import danych z pliku

Na koniec wpisujemy klasyczne już polecenie:
$ ldifde -i -f c:\Users\Administrator\Desktop\user.txt
i powinniśmy uzyskać poniższy efekt z informacją, że pomyślnie zmodyfikowano 10 wpisów

III. Wykorzystanie polecenia ldifde do zarządzania innymi obiektami

Polecenie ldifde możemy też wykorzystać do tworzenia innych obiektów, takich jak grupy czy jednostki organizacyjne.


Sprawdzanie informacji o grupach

W tym przykładzie zajmiemy się tworzeniem grup, ale dodatkowo wykorzystamy możliwość dodania w trakcie tworzenia do niej kilku użytkowników. Najpierw sprawdzimy w kontenerze Users, jakie mamy grupy poleceniem:
$ dsquery group "CN=Users,DC=elektronik,DC=local"
Wybierzemy grupę np. Klasa2 i sprawdzimy czy ma jakichś członków poleceniem:
$ dsget group "CN=Klasa2,CN=Users,DC=elektronik,DC=local" -members

Eksport do pliku informacji o grupie

Wiemy już, że nasza grupa ma trzech członków, więc możemy teraz wyeksportować do pliku informacje o niej poleceniem:
$ ldifde -f group.txt -d "CN=Klasa2,CN=Users,DC=elektronik,DC=local"

Zawartość wyeksportowanego pliku

W kolejnym kroku podglądniemy sobie zawartość pliku group.txt, żeby zobaczyć jakie parametry należy użyć, aby utworzyć nową grupę, która będzie zawierać naszych trzech użytkowników. Zaznaczone zostały one na zielono

Zawartość pliku gotowego do importu

Po skasowaniu zbędnych opcji i delikatnych zmianach, zawartość pliku powinna być taka jak wyżej. Jak widać tworzymy grupę o nazwie Testowa

Wykonanie importu z pliku

Na koniec wpisujemy klasyczne już polecenie:
$ ldifde -i -f group.txt
i powinniśmy uzyskać powyższy efekt z informacją, że pomyślnie zmodyfikowano 1 wpis

Sprawdzanie informacji o grupie i jej członkach

Oczywiście musimy jeszcze sprawdzić, czy taka grupa została utworzona oraz czy zawiera tych trzech członków. Uzyjemy do tego znanych poleceń:
$ dsget group "CN=Testowa,CN=Users,DC=elektronik,DC=local" -desc -secgrp -scope
$ dsget group "CN=Testowa,CN=Users,DC=elektronik,DC=local" -members
Wszystko się zgadza, mamy globalną grupę zabezpieczeń, zawierającą trzech członków

IV. Tworzenie i usuwanie kont użytkowników za pomocą Windows PowerShell.

Za pomocą Windows PowerShell możemy tworzyć bezpośrednio użytkowników, zarówno bezpośrednio jak i z wykorzystaniem pliku *.csv. Odpowiednio uzupełniony plik pozwala zakładać konta dla większej grupy użytkowników. Dodatkowo to narzędzie ma większe możliwości niż ldifde ponieważ pozwala na zakładanie kont z hasłem.


Tworzenie pojedynczego użytkownika

Najpierw utworzymy pojedynczego użytkownika za pomocą odpowiedniego polecenia. Składanie polecenia jest dosyć skomplikowna i należy uważać, aby nie popełnić jakiejś literówki. Wpisujemy więc:
$ new-ADUser -Name "James JB. Bond10" -SamAccountName "James JB. Bond10" -UserPrincipalName "[email protected]" -GivenName "James" -SurName "Bond10" -path "OU=Informatycy,DC=elektronik,DC=local" -Enabled $true -AccountPassword (Read-Host -AsSecureString "Password") -ChangePasswordAtLogon $true
Jeśli uzyskaliśmy powyższy efekt to znaczy, że polecenie zostało wykonane poprawnie, a konto zostało utworzone

Potwierdzenie utworzenia konta

Teraz sprawdzamy w Active Directory, czy faktycznie nasze konto zostało utworzone z odpowiednimi parametrami. Jak widać wszystko się zgadza

Zawartość pliku 10kont.csv

Teraz utworzymy więcej kont użytkowników - w naszym przypadku 10. Musimy utworzyć plik typu *.csv. Otwieramy albo MSExcel albo notatnik i tworzymy plik np. 10kont.csv, podając parametry konta oddzielone przecinkami oraz odpowiadające im wartości (dane)

Import z pliku 10kont.csv

Wpisujemy teraz polecenie:
$ Import-CSV 10kont.csv | foreach {New-ADUser -SamAccountName $_.SamAccountName -Name $_.Name -Surname $_.surname -GivenName $_.GivenName -Path "OU=Informatycy,DC=elektronik,DC=local" -AccountPassword (ConvertTo-SecureString -AsPlainText $_.password -Force) -UserPrincipalName $_.UserPrincipalName -Description $_.Description -Company $_.Company -Department $_.Department -Enabled $true}
Powinniśmy uzyskać powyższy efekt

Potwierdzenie utworzenia kont

I na koniec sprawdzamy jeszcze czy nasze konta faktycznie zostały utworzone. Widzimy, że tak jest i zgadza się nawet nadany opis

Zadanie do wykonania na lekcji

    1.  Korzystając z polecenia ldifde wyeksportować informacje o całej domenie do pliku. Potwierdzić to zrzutem ekranu z interpretera poleceń oraz z utworzonego pliku, przedstawić informacje dotyczące grupy "Administratorzy".
    2.  Korzystając z polecenia ldifde wyeksportować informacje o dowolnym użytkowniku do pliku, zrzuty ekranu - jak wyżej.
    3.  Utworzyć dwie jednostki organizacyjne: "Produkcja" i "Administracja"
    4.  Utworzyć w j.o. "Produkcja" za pomocą ldifde 10 włączonych kont użytkowników z takimi danymi jak: imię, nazwisko, nazwa główna konta, opis "Produkcja" – zrzuty jak wyżej.
    5.  Wyeksportować do pliku informacje o tej jednostce organizacyjnej.
    6.  Usunąć j.o. "Produkcja" za pomocą polecenia dsrm.
    7.  Utworzyć w j.o. "Administracja" za pomocą ldifde 10 kont użytkowników (5 włączonych i 5 wyłączonych) z takimi danymi jak: imię, nazwisko, nazwa główna konta, opis "Administracja", inicjały użytkownika, nazwa wyświetlana – zrzuty jak wyżej
    8.  Wyeksportować do pliku informacje o tej jednostce organizacyjnej.
    9.  Usunąć j.o. "Administracja" za pomocą polecenia dsrm.
    10.  Utworzyć j.o. "Power".
    11.  Utworzyć w j.o. "Power" za pomocą PS i pliku *.csv 10 włączonych kont użytkowników z takimi danymi jak: imię, nazwisko, nazwa główna konta, opis "Power", inicjały użytkownika, nazwa wyświetlana – zrzuty jak wyżej.