We właściwościach konta AD jednym z pól jest pole stanowisko. Ręczne uzupełnienie tego pola dla kilkudziesięciu czy kilkuset użytkowników jest bardzo pracochłonne. Najlepszym rozwiązaniem jest pobranie tych danych z programu kadrowego i zaimportowanie ich do AD. Mało prawdopodobne jest aby w programie kadrowym zawarte były loginy AD czy konta e-mail ale na pewno są takie dane jak imię i nazwisko i właśnie te dane możemy wykorzystać. Nie podam rozwiązania pobrania danych z programu z programu kadrowego gdyż zależy to od używanego programu ale można to zrobić bezpośrednio z programu kadrowego jako eksport danych (o ile program posiada taką funkcjonalność) lub poprzez zapytanie SQL do bazy danych.
Po pobraniu imienia, nazwiska oraz stanowiska z programu kadrowego tworzymy plik csv z tymi danymi w postaci:
cn,Title
Jan Kowalski,Inspektor
Agata Nowak,zastępca dyrektora
Adam Kwiatkowski,kierownik
Plik musi być sformatowany jako UTF-8.
Dane imię i nazwisko powinny być zapisane w takiej samej kolejności jak w polu „cn” właściwości konta AD. Domyślnie jest to „imię nazwisko” ale jeśli ktoś dokonywał zmian w AD i zmienił to na „nazwisko imię” to musimy także dokonać odpowiednich mian w naszym pliku csv. Następnie z poziomu PowerShell-a wydajemy polecenie:
Import-Csv -Path c:\sciezka_do_pliku\nasz_plik.csv | Foreach-Object {Get-ADUser -Filter "cn -eq '$($_.cn)'" |Set-ADUser -Title $_.Title}
W przypadku gdy plik csv będzie także zawierał dane osób które nie posiadają kont w AD nie ma potrzeby usuwania tych danych. Przy imporcie zostaną one pominięte jako niemożliwe do dopasowania.
Powyższy sposób jest dobry o ile nie mamy np. 2 pracowników którzy posiadają to samo imię jak i nazwisko. Do właściwości konta użytkownika możemy także dodać numer ewidencyjny użytkownika z programu kadrowego. W późniejszym terminie w oparciu o ten numer możemy aktualizować inne dane pobrane np. z programu kadrowego. W tym przypadku 2 użytkowników posiadających to samo imię i nazwisko na pewno będą posiadać inny numer ewidencyjny. Numer ewidencyjny możemy zapisać w polu „employeeID”. Do tego celu przygotowujemy plik csv zawierający numer ewidencyjny oraz imię i nazwisko użytkownika w postaci:
employeeID,cn
18,Paweł Nowak
28,Anna Kowalska
47,Tomasz Krajewski
Uzupełnienia numerów ewidencyjnych wykonujemy poprzez wydanie polecenia:
Import-Csv -Path c:\temp\uzytkownicy.csv | Foreach-Object {Get-ADUser -Filter "cn -eq '$($_.cn)'" |Set-ADUser -employeeID $_.employeeID}
Po wykonaniu powyższych czynności możemy zweryfikować poprawność danych i uzupełnić ręcznie pola, które nie zostały uzupełnione automatycznie lub dla użytkowników posiadających takie samo imię i nazwisko. Weryfikację możemy dokonać wykonując polecenie:
get-aduser -Properties * -filter * |ft cn,employeeid,title
Weryfikację możemy ograniczyć tylko do konkretnego OU
get-aduser -Properties * -filter * -SearchBase 'OU=lokalizacja,DC=domena,DC=local'|ft cn,employeeid,title
W powyższy sposób możemy systematycznie co jakiś czas aktualizować stanowiska dla kont użytkowników AD.
W przyszłości możemy wyszukać konta użytkowników którzy nie posiadają wypełnionego pola EmplyeeID.
dla konkretnego OU:
get-aduser -Properties * -filter * -SearchBase 'OU=wydzial,DC=domena,DC=local'|Where-Object {$_.employeeid -eq $null}|ft DisplayName,DistinguishedName,employeeid
lub dla całego AD
get-aduser -Properties * -filter * |Where-Object {$_.employeeid -eq $null}|ft DisplayName,DistinguishedName,employeeid
Do uzupełnienia danych o stanowisku w oparciu o numer ewidencyjny pracownika przygotowujemy plik csv w postaci:
employeeID,cn,tittle
18,Paweł Nowak,inspektor
28,Anna Kowalska,dyrektor
47,Tomasz Krajewski,kierowca
Importu dokonujemy poleceniem
Import-Csv -Path C:\Temp\uzytkownicy.csv |ForEach-Object {Get-ADUser -Filter "employeeid -eq '$($_.employeeid)'" |Set-ADUser -Title $_.Title}
Plik z danymi użytkowników może zawierać także inne informacje. Ważne aby pola które nas interesują miały odpowiednie nazwy w nagłówku tj. employeeID,cn,tittle