Členství uživatele ve skupinách AD

Zjištění resp. výpis skupin, jejichž je uživatel členem není zcela triviální a není možné se na tuto informaci dotázat, jako na vlastnost objektu uživatele. Je potřeba to trochu obejít. Musíme tedy nejprve projít všechny skupiny Active Directory a zjistit, jestli je daný uživatel jejich členem, následně si vypíšeme skupiny, v nichž je daný uživatel zařazen.

Ve skriptu musíme nejprve načíst modul ActiveDirectory, abychom mohli pracovat s patřičnými cmdlety.

Import-Module ActiveDirectory

Následně si zajistíme jméno uživatele z AD.

$objUser = Get-ADUser -Identity USER
$strUser = $objUser.Name

Můžeme si také zjistit Primární skupinu uživatele

$strPrimary = Get-ADUser -Identity $objUser -Properties PrimaryGroup
$strPrimary = $strPrimary.PrimaryGroup
$strPrimaryGroup = Get-ADGroup -Identity $strPrimary
$strPrimaryGroup = $strPrimaryGroup.Name

Načteme si všechny skupiny z Active Directory

$objGroups = Get-ADGroup -filter *

…a pro každou načtenou skupinu z AD oveříme, jestli je jejím členem zadaný uživatel

ForEach ($objGroup in $objGroups) {
$isGroup = Get-ADGroupMember -Identity $objGroup | where {$_.samaccountname -eq $strAbbr}

…pokud ano, ještě zjistíme, jestli je skupina primární skupinou uživatele a podle to upravíme výstup, přidáme (Primary).

If ($isGroup -ne $null) {
If ($strPrimaryGroup -eq $objGroup.Name) {
$strOutput = $objGroup.Name + " (Primary)"
}
else {
$strOutput = $objGroup.Name
}

…nakonec vypíšeme výstup, tedy skupinu jejímž členem uživatel je.

Write-Host ($strOutput)
}
}

Takže ve výsledku bude celý skript vypadat následovně. Před spuštěním je samozřejmě potřeba zadat konkrétního uživatele místo slova USER:

Import-Module ActiveDirectory

$objUser = Get-ADUser -Identity USER
$strUser = $objUser.Name

$strPrimary = Get-ADUser -Identity $objUser -Properties PrimaryGroup
$strPrimary = $strPrimary.PrimaryGroup
$strPrimaryGroup = Get-ADGroup -Identity $strPrimary
$strPrimaryGroup = $strPrimaryGroup.Name

$objGroups = Get-ADGroup -filter *

ForEach ($objGroup in $objGroups) {
$isGroup = Get-ADGroupMember -Identity $objGroup | where {$_.samaccountname -eq $strAbbr}

If ($isGroup -ne $null) {
If ($strPrimaryGroup -eq $objGroup.Name) {
$strOutput = $objGroup.Name + " (Primary)"
}
else {
$strOutput = $objGroup.Name
}
Write-Host ($strOutput)
}
}

Komentáře nejsou povoleny.