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)
}
}