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.
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.
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
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
Sprawdzamy teraz nasz plik domena.txt. U góry mamy informację o tym, że dotyczy do domeny elektronik.local
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
I ponownie sprawdzamy czy plik user.txt znajduje się "na pulpicie" oraz jaką ma zawartość
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
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.
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.
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
Wpisujemy teraz polecenie:
$ ldifde -i -f c:\Users\Administrator\Desktop\user.txt
i powinniśmy uzyskać powyższy efekt
I sprawdzamy czy nasze konto faktycznie zostało utworzone, z przykładowymi parametrami
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
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
Sprawdzamy jeszcze czy nasze konta faktycznie zostały utworzone i widzimy, że wszystko się zgadza. Na żółto zaznaczone zostały konta wyłączone
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...
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
Polecenie ldifde możemy też wykorzystać do tworzenia innych obiektów, takich jak grupy czy jednostki organizacyjne.
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
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"
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
Po skasowaniu zbędnych opcji i delikatnych zmianach, zawartość pliku powinna być taka jak wyżej. Jak widać tworzymy grupę o nazwie Testowa
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
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
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.
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
Teraz sprawdzamy w Active Directory, czy faktycznie nasze konto zostało utworzone z odpowiednimi parametrami. Jak widać wszystko się zgadza
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)
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
I na koniec sprawdzamy jeszcze czy nasze konta faktycznie zostały utworzone. Widzimy, że tak jest i zgadza się nawet nadany opis