PowerShell: Modyfikacja atrybutów użytkownika AD

Użytkownicy w Active Directory, posiadają zazwyczaj dość dużą liczbę dodatkowych atrybutów. Zadanie jest dość proste: uzupełnić istniejący atrybut wartością innego także  już wypełnionego. Zacznijmy budowę skryptu krok po kroku…

Listujemy wszystkich użytkowników i ich wszystkie atryuty:

Get-ADUser -filter * -Properties *

Spróbujmy teraz odfiltrować ta listę znajdując użytkowników którzy określony atrybut maja pusty (wartość null/non set)

Get-ADUser -filter * -Properties mailNickname | where mailNickname -EQ $null

Założenie jest takie aby wartość atrybutu pobierać z innego (pobieramy sama wartość. bez jego nagłówka za pomocą -ExpandProperty):

Get-ADUser nazwa_uzytkownika | select samAccountName -ExpandProperty samAccountName

Znamy obiekty na których mamy dokonać zmiany, mamy dane które chcemy tam umieścić. Teraz wróćmy na chwile do tego co ma robić nasz skrypt, a ma on zmieniać wartość określonego atrybutu. Posłuży nam do tego polecenie Set-Aduser które w przypadku pojedynczego użytkownika wygląda tak:

Set-Aduser nazwa_uzytkownika -Replace @{mailNickname="wartosc_atrybutu"}

Mamy wszystkie elementy układanki czas użyć zmiennych i funkcji pętli:

$users = Get-ADUser -filter * -Properties mailNickname | where mailnickname -EQ $null


foreach($user in $users) {
 
   $nick_name = Get-ADUser  $user | select samAccountName -ExpandProperty samAccountName

   Set-Aduser $user -Replace @{mailNickname="$nick_name"}

}

Skrypt mamy gotowy!