Szűrés AD objektumokra

Kezdjük el felderíteni az AD adatbázist ezen cmdletek segítségével, nézzük milyen felhasználóink vannak:

PS C:\> Get-QADUser

 

Name                           Type            DN

----                           ----            --

Administrator                  user            CN=Administrator,CN=Users,DC...

Guest                          user            CN=Guest,CN=Users,DC=r2,DC=dom

krbtgt                         user            CN=krbtgt,CN=Users,DC=r2,DC=dom

Szentirmai Ferenc              user            CN=Szentirmai Ferenc,OU=Észa...

Kardos Viktor                  user            CN=Kardos Viktor,OU=Dél,DC=r...

Szembeszökő különbség, hogy a QAD Get-… cmdletek nem olyan óvatosak, mint a Microsoft ActiveDirectory modulé, hiszen itt, ha nem adok szűrő feltételt, akkor az összes objektumot (vagy legalábbis jó sokat) visszakapok. Nézzük, hogy tulajdonságok tekintetében mennyire óvatos:

PS C:\> Get-QADUser "kulcsár ildikó" | fl *

 

 

objectClass                : {top, person, organizationalPerson, user}

objectSid                  : 010500000000000515000000F462067DD14083AB02DB812C5

                             E040000

givenName                  : Kulcsár

whenCreated                : 2012.03.18. 15:13:47

objectGUID                 : 2636461C90D77145803AE0B15277FC77

whenChanged                : 2012.03.18. 15:13:48

l                          : Debrecen

sn                         : Ildikó

edsvaNamingContextDN       :

facsimileTelephoneNumber   :

mail                       :

mobile                     :

physicalDeliveryOfficeName :

telephoneNumber            :

st                         :

wWWHomePage                :

City                       : Debrecen

Company                    :

Láthatjuk, hogy itt sem tapasztalhatunk semmi szerénységet, nagyon sok AD attribútum be lett olvasva. Így ha optimalizálni akarjuk ezeket a lekérdező cmdleteket, érdemes mindenképpen valami szűrő feltételt megadni és az attribútumok tekintetében is valamilyen korlátozást alkalmazni. Ezen alaphelyzet szerinti viselkedést meghatározó paraméterekre vonatkozóan külön cmdletek, a Get-QADPSSnapinSettings és a Set-QADPSSnapinSettings állnak rendelkezésünkre:

PS C:\> Get-QADPSSnapinSettings -DefaultExcludedProperties

allowedAttributes

allowedAttributesEffective

allowedChildClasses

allowedChildClassesEffective

altRecipientBL

aNR

Sajnos a Get-QADPSSnapinSettings cmdletnek nincs ’-all’ paramétere, viszont valamilyen paraméter kötelező megadni, így a teljes QAD snapin viselkedését meghatározó paraméterek áttekintése kicsit körülményes. Ennek kiküszöbölésére készítettem egy kis szkriptet, ami minden információt megad nekünk:

Get-Command Get-QADPSSnapinSettings |

Select-Object -ExpandProperty parameters | %{$_.keys} |

?{$_ -match "default" -or $_ -match "integer"} | %{

    $p =@{$_ = $true}

    new-object -TypeName psobject -Property @{Parameter = $_; Value = (Get-QADPSSnapinSettings @p)}

}

Ennek kimenete:

PS C:\> C:\Munka\get-qadparams.ps1 | ft parameter, value -Wrap

 

Parameter                               Value

---------                               -----

DefaultExcludedProperties               {allowedAttributes, allowedAttributesE

                                        ffective, allowedChildClasses, allowed

                                        ChildClassesEffective...}

DefaultPropertiesExcludedFromNonBaseSea {tokenGroups, tokenGroupsGlobalAndUniv

rch                                     ersal, tokenGroupsNoGCAcceptable}

Integer8AttributesThatContainDateTimes  {badPasswordTime, pwdLastSet, whenChan

                                        ged, whenCreated...}

Integer8AttributesThatContainNegativeTi {lockoutDuration, maxPwdAge, minPwdAge

meSpans                                 , lockOutObservationWindow...}

DefaultPageSize                         50

DefaultSizeLimit                        1000

DefaultSearchScope                      Subtree

DefaultWildcardMode                     Ldap

DefaultOutputPropertiesForUserObject    {description, displayName, name, objec

                                        tClass...}

DefaultOutputPropertiesForGroupObject   {description, displayName, name, objec

                                        tClass...}

DefaultOutputPropertiesForComputerObjec {description, displayName, name, objec

t                                       tClass...}

DefaultOutputPropertiesForAdObject      {description, displayName, name, objec

                                        tClass...}

DefaultOutputPropertiesForPasswordSetti {description, displayName, name, objec

ngsObject                               tClass...}

Itt kapunk választ például arra, hogy mi a maximálisan megjelenített elemszám a lekérdezések eredményeképp (1000), de természetesen ez átírható a Set-QADPSSnapinSettings, vagy akár ad-hoc jelleggel minden lekérdező parancsnál a –SizeLimit paraméterrel. A 0 érték jelenti, hogy nem akarunk korlátozást az eredményhalmaz méretére vonatkozólag:

PS C:\> Get-QADGroup -SizeLimit 0

 

Name                           Type            DN

----                           ----            --

Administrators                 group           CN=Administrators,CN=Builtin...

Users                          group           CN=Users,CN=Builtin,DC=r2,DC...

Guests                         group           CN=Guests,CN=Builtin,DC=r2,D...

Print Operators                group           CN=Print Operators,CN=Builti...

Míg a Microsoft AD modulban speciális keresésekre egy külön cmdlet állt rendelkezésünkre, a Search‑ADAccount, addig itt ez a funkcionalitás a Get-QADUser és Get-QADComputer cmletekbe van beleintegrálva, például keressük a letiltott felhasználókat:

PS C:\> Get-QADUser -Disabled

 

Name                           Type            DN

----                           ----            --

Guest                          user            CN=Guest,CN=Users,DC=r2,DC=dom

krbtgt                         user            CN=krbtgt,CN=Users,DC=r2,DC=dom

Ebben a témában még sok egyebet is el tudunk érni, amit a Microsoft megoldásával nem, vagy csak némi plusz programozás árán. Itt közvetlenül rá tudok keresni például azokra az amúgy nem letiltott felhasználókra, akik 10 napja nem változtattak jelszót:

PS C:\> Get-QADUser -PasswordNotChangedFor 10 -Enabled

 

Name                           Type            DN

----                           ----            --

Administrator                  user            CN=Administrator,CN=Users,DC...

Szentirmai Ferenc              user            CN=Szentirmai Ferenc,OU=Észa...

Kardos Viktor                  user            CN=Kardos Viktor,OU=Dél,DC=r...

Varga Gyöngyvér                user            CN=Varga Gyöngyvér,OU=Kelet,...

A csoporttagság felderítése tekintetében is van néhány nagyon jó szolgáltatás, amihez figyelembe kell venni azt is, hogy ez a snapin régebbi tartományvezérlőkkel is együttműködik, amelyek még nem ismerik a recursivesearch lehetőséget. Például keresem azokat a felhasználókat, akik még indirekt módon sem tagjai egy csoportnak:

PS C:\> Get-QADUser -NotIndirectMemberOf csoport

 

Name                           Type            DN

----                           ----            --

Administrator                  user            CN=Administrator,CN=Users,DC...

Guest                          user            CN=Guest,CN=Users,DC=r2,DC=dom

krbtgt                         user            CN=krbtgt,CN=Users,DC=r2,DC=dom

Angeli Edina                   user            CN=Angeli Edina,OU=Kelet,DC=...

Ebben a példában létrehoztam egy Csoport nevű csoportot, meg beletettem egy Másikcsoport nevű másik csoportot, és a felhasználóimat szétosztottam a két csoport között, kivéve a beépítetteket és Angeli Edinát. A fenti egyszerű kifejezéssel megkaptam mindezen felhasználókat.



Word To HTML Converter