Az ActiveDirectory modul betöltésével kapunk még egy meglepetést is:
[1] PS C:\> Get-PSDrive
WARNING: column "CurrentLocation" does not fit into the display and was remove
d.
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
A FileSystem A:\
AD
ActiveDire... //RootDSE/
Alias Alias
…
Kapunk egy új meghajtót AD: néven. Ezen keresztül is elérhetjük a címtár adatbázist és az ottani objektumokat. Bár erre a Get-ADObject és hasonló cmdletekkel is alkalmasak, de az objektumok hierarchiája és a hozzáférési listája ezen meghajtón keresztül férhető hozzá igazán.
Nézzük, hogy mi is van ezen a meghajtón:
[2] PS C:\> dir ad:
Name ObjectClass DistinguishedName
---- ----------- -----------------
r2 domainDNS DC=r2,DC=dom
Configuration configuration CN=Configuration,DC=r2,DC=dom
Schema dMD CN=Schema,CN=Configuration,DC=r2,...
DomainDnsZones domainDNS DC=DomainDnsZones,DC=r2,DC=dom
ForestDnsZones domainDNS DC=ForestDnsZones,DC=r2,DC=dom
Látható, hogy a legfelsőbb szinten maguk a címtárpartíciók láthatók. Az r2 tartományi partíciómon kívül a Configuration, Schema és a DNS AD integrált zónapartíciók. Az aktuális könyvtárnak beállítom az AD: meghajtót:
[3] PS C:\> cd ad:
Ahhoz, hogy még beljebb lépjek és a TAB billentyűvel ki lehessen egészíttetni az elérési utakat, a DistinguishedName értékét kell elkezdeni begépelni:
[4] PS AD:\> cd dc=r<tab>
És ebből lesz a TAB lenyomása után:
[4] PS AD:\> cd '.\DC=r2,DC=dom'
Ezt egy picit szokni kell, sajnos a sima Name gépelése nem vezet eredményhez. Nézzük, itt mi van:
[5] PS AD:\DC=r2,DC=dom> dir
Name ObjectClass DistinguishedName
---- ----------- -----------------
Builtin builtinDomain CN=Builtin,DC=r2,DC=dom
Computers container CN=Computers,DC=r2,DC=dom
Domain Controllers organizationalUnit OU=Domain Controllers,DC=r2,DC=dom
ForeignSecurityPr... container CN=ForeignSecurityPrincipals,DC=r...
Infrastructure infrastructureUpdate CN=Infrastructure,DC=r2,DC=dom
IT Admins organizationalUnit OU=IT Admins,DC=r2,DC=dom
LostAndFound lostAndFound CN=LostAndFound,DC=r2,DC=dom
Managed Computers organizationalUnit OU=Managed Computers,DC=r2,DC=dom
Managed Service A... container CN=Managed Service Accounts,DC=r2...
Managed Users organizationalUnit OU=Managed Users,DC=r2,DC=dom
NTDS Quotas msDS-QuotaContainer CN=NTDS Quotas,DC=r2,DC=dom
Program Data container CN=Program Data,DC=r2,DC=dom
System container CN=System,DC=r2,DC=dom
Users container CN=Users,DC=r2,DC=dom
Ezek bizony a tartományi partíció legfelsőbb szintű konténerei és szervezeti egységei. Nézzünk bele a „Managed Users” szervezeti egységbe:
[6] PS AD:\DC=r2,DC=dom> cd '.\OU=Managed Users'
[7] PS AD:\OU=Managed Users,DC=r2,DC=dom> dir
Name ObjectClass DistinguishedName
---- ----------- -----------------
Beosztott Béla user CN=Beosztott Béla,OU=Managed User...
CsoportTörölveLesz group CN=CsoportTörölveLesz,OU=Managed ...
Fájdalom Csilla user CN=Fájdalom Csilla,OU=Managed Use...
Főnök Ferenc user CN=Főnök Ferenc,OU=Managed Users,...
Vegetári János user CN=Vegetári János,OU=Managed User...
És nézzük meg, hogy milyen adatokhoz jutunk hozzá egy felhasználóról:
[8] PS AD:\OU=Managed Users,DC=r2,DC=dom> Get-Item '.\CN=Beosztott Béla' | Form
at-List *
PSPath : ActiveDirectory:://RootDSE/CN=Beosztott Béla,OU=Managed Us
ers,DC=r2,DC=dom
PSParentPath : ActiveDirectory:://RootDSE/OU=Managed Users,DC=r2,DC=dom
PSChildName : CN=Beosztott Béla
PSDrive : AD
PSProvider : ActiveDirectory
PSIsContainer : True
distinguishedName : CN=Beosztott Béla,OU=Managed Users,DC=r2,DC=dom
name : Beosztott Béla
objectClass : user
objectGUID : 20114f76-357d-4055-b607-d609101371e7
PropertyNames : {distinguishedName, name, objectClass, objectGUID}
PropertyCount : 4
Látható, hogy itt sem férünk hozzá az összes AD tulajdonsághoz alaphelyzetben, így ha azokra van szükségünk, akkor meg kell adni a –properties paramétert is:
[24] PS AD:\OU=Managed Users,DC=r2,DC=dom> Get-Item '.\CN=Beosztott Béla' -prop
erties *
PSPath : ActiveDirectory:://RootDSE/CN=Beosztott Béla,OU=Manage
d Users,DC=r2,DC=dom
PSParentPath : ActiveDirectory:://RootDSE/OU=Managed Users,DC=r2,DC=d
om
PSChildName : CN=Beosztott Béla
PSDrive : AD
PSProvider : ActiveDirectory
PSIsContainer : True
accountExpires : 9223372036854775807
badPasswordTime : 0
badPwdCount : 0
cn : Beosztott Béla
codePage : 0
countryCode : 0
description : Demó
displayName : Beosztott Béla
distinguishedName : CN=Beosztott Béla,OU=Managed Users,DC=r2,DC=dom
dSCorePropagationData : {2009. 12. 07. 22:20:21, 2009. 12. 07. 22:16:42, 2009.
12. 07. 22:11:52, 2009. 12. 07. 21:41:10...}
givenName : Béla
instanceType : 4
lastKnownParent : OU=Managed Users,DC=r2,DC=dom
lastLogoff : 0
lastLogon : 0
logonCount : 0
memberOf : {CN=CsoportTörölveLesz,OU=Managed Users,DC=r2,DC=dom}
msDS-LastKnownRDN : Beosztott Béla
name : Beosztott Béla
nTSecurityDescriptor : System.DirectoryServices.ActiveDirectorySecurity
objectCategory : CN=Person,CN=Schema,CN=Configuration,DC=r2,DC=dom
objectClass : user
objectGUID : 20114f76-357d-4055-b607-d609101371e7
objectSid : S-1-5-21-3398938913-3940250523-927435294-1124
primaryGroupID : 513
pwdLastSet : 129046772259930547
sAMAccountName : bb
sAMAccountType : 805306368
sn : Beosztott
title : melós
userAccountControl : 512
userPrincipalName : bb@r2.dom
uSNChanged : 17055
uSNCreated : 16959
whenChanged : 2009. 12. 07. 22:20:21
whenCreated : 2009. 12. 07. 17:33:45
PropertyNames : {accountExpires, badPasswordTime, badPwdCount, cn...}
PropertyCount : 37
Így már megkaptam az összes kitöltött AD tulajdonságát a felhasználónak.
Megjegyzés
A –properties tulajdonság un. dinamikus paraméter, azaz az aktuális elérési út PSProviderétől függ a jelenléte. Ha a fájlrendszerben vagyunk, akkor ilyen paramétere nincs a Get-Item cmdletnek. A jelenlegi PowerShell verzióban van egy kis hiányosság, ez a dinamikus paraméter TAB kiegészítéssel nem hívható elő sajnos. A help azért tud róla:
[25] PS AD:\OU=Managed Users,DC=r2,DC=dom> get-help Get-Item -Parameter propert
ies
-Properties <string[]>
Specifies a comma-delimited list of properties to be retrieved for each it
em (Active Directory object). The * wildcard can be used to retrieve all
properties.
Required? false
Position? named
Default value
Accept pipeline input? false
Accept wildcard characters? false
További dinamikus paramétereink is vannak az ActiveDirectory provider környezetben:
‑Server, ‑GlobalCatalog, ‑SizeLimit, ‑PageSize, ‑FormatType.
Ha már ‑Server és ‑GlobalCatalog, akkor nézzük ugyanezt a felhasználót a Globális Katalóguson keresztül:
[32] PS AD:\OU=Managed Users,DC=r2,DC=dom> Get-Item '.\CN=Beosztott Béla' -prop
erties * -globalcatalog -server dc:3268
PSPath : ActiveDirectory:://RootDSE/CN=Beosztott Béla,OU=Manage
d Users,DC=r2,DC=dom
PSParentPath : ActiveDirectory:://RootDSE/OU=Managed Users,DC=r2,DC=d
om
PSChildName : CN=Beosztott Béla
PSDrive : AD
PSProvider : ActiveDirectory
PSIsContainer : True
cn : Beosztott Béla
description : Demó
displayName : Beosztott Béla
distinguishedName : CN=Beosztott Béla,OU=Managed Users,DC=r2,DC=dom
dSCorePropagationData : {2009. 12. 07. 22:20:21, 2009. 12. 07. 22:16:42, 2009.
12. 07. 22:11:52, 2009. 12. 07. 21:41:10...}
givenName : Béla
instanceType : 4
memberOf : {CN=CsoportTörölveLesz,OU=Managed Users,DC=r2,DC=dom}
name : Beosztott Béla
nTSecurityDescriptor : System.DirectoryServices.ActiveDirectorySecurity
objectCategory : CN=Person,CN=Schema,CN=Configuration,DC=r2,DC=dom
objectClass : user
objectGUID : 20114f76-357d-4055-b607-d609101371e7
objectSid : S-1-5-21-3398938913-3940250523-927435294-1124
primaryGroupID : 513
sAMAccountName : bb
sAMAccountType : 805306368
sn : Beosztott
userAccountControl : 512
userPrincipalName : bb@r2.dom
uSNChanged : 17055
uSNCreated : 16959
whenChanged : 2009. 12. 07. 22:20:21
whenCreated : 2009. 12. 07. 17:33:45
PropertyNames : {cn, description, displayName, distinguishedName...}
PropertyCount : 25
Látható, hogy az előző próbálkozás 37 AD tulajdonságával szemben itt csak 25 tulajdonságot kaptunk.
Nézzük akkor, hogy a hozzáférési lista hogyan érhető el ezen az AD: meghajtón keresztül a Get-Acl cmdlet segítségével:
[18] PS AD:\DC=r2,DC=dom> Get-ChildItem | get-acl
Get-Acl :
Cannot validate argument on parameter 'Path'. The argument is null,
empty, or an
element of the argument collection contains a null value. Supply
a collection
that does not contain any null values and then try the command ag
ain.
At line:1
char:24
+
Get-ChildItem | get-acl <<<<
+ CategoryInfo : InvalidData:
(OU=_TemplateOU,DC=r2,DC=dom:PSObj
ect) [Get-Acl],
ParameterBindingValidationException
+ FullyQualifiedErrorId :
ParameterArgumentValidationError,Microsoft.Powe
rShell.Commands.GetAclCommand
Sajnos egy újabb apró hiba van itt a PowerShellben, az AD objektumok PSPath tulajdonsága nem adódik át megfelelően a Get-ACL-nek, így a csővezetéken nem történik meg a paraméterátadás. Egy kis trükkel azonban megkerülhető a probléma:
[20] PS AD:\DC=r2,DC=dom> Get-ChildItem | foreach-object {get-acl -path $_.pspa
th}
Path Owner Access
---- ----- ------
ActiveDirectory:://Root... R2\Domain Admins Everyone Deny ...
ActiveDirectory:://Root... BUILTIN\Administrators Everyone Allow ...
ActiveDirectory:://Root... R2\Domain Admins NT AUTHORITY\Authentic...
ActiveDirectory:://Root... R2\Domain Admins Everyone Deny ...
…
Egy konkrét objektumra:
[21] PS AD:\DC=r2,DC=dom> Get-Item '.\OU=Managed Users' | ForEach-Object {get-a
cl -Path $_.pspath} | Format-List
Path : ActiveDirectory:://RootDSE/OU=Managed Users,DC=r2,DC=dom
Owner : R2\Domain Admins
Group : R2\Domain Admins
Access : NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS Allow
NT AUTHORITY\Authenticated Users Allow
NT AUTHORITY\SYSTEM Allow
R2\Domain Admins Allow
BUILTIN\Account Operators Allow
BUILTIN\Account Operators Allow
BUILTIN\Account Operators Allow
BUILTIN\Account Operators Allow
BUILTIN\Print Operators Allow
R2\PSHelpDesk Allow
R2\PSHelpDesk Allow
R2\PSHelpDesk Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS Allow
NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS Allow
NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
NT AUTHORITY\SELF Allow
R2\Enterprise Admins Allow
BUILTIN\Pre-Windows 2000 Compatible Access Allow
BUILTIN\Administrators Allow
Audit :
Sddl : O:DAG:DAD:AI(A;;LCRPLORC;;;ED)(A;;LCRPLORC;;;AU)(A;;CCDCLCSWRPWPDTLOC
RSDRCWDWO;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;DA)(OA;;CCDC;bf967a86
-0de6-11d0-a285-00aa003049e2;;AO)(OA;;CCDC;bf967a9c-0de6-11d0-a285-00
aa003049e2;;AO)(OA;;CCDC;4828cc14-1437-45bc-9b07-ad6f015e5f28;;AO)(OA
;;CCDC;bf967aba-0de6-11d0-a285-00aa003049e2;;AO)(OA;;CCDC;bf967aa8-0d
e6-11d0-a285-00aa003049e2;;PO)(OA;CIIO;WP;;bf967aba-0de6-11d0-a285-00
aa003049e2;S-1-5-21-3398938913-3940250523-927435294-1110)(OA;CIIO;CR;
00299570-246d-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa0030
49e2;S-1-5-21-3398938913-3940250523-927435294-1110)(OA;CIIO;CR;ab721a
53-1e2f-11d0-9819-00aa0040529b;bf967aba-0de6-11d0-a285-00aa003049e2;S
-1-5-21-3398938913-3940250523-927435294-1110)(OA;CIIOID;RP;4c164200-2
0c0-11d0-a768-00aa006e0529;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(O
A;CIIOID;RP;4c164200-20c0-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a
285-00aa003049e2;RU)(OA;CIIOID;RP;5f202010-79a5-11d0-9020-00c04fc2d4c
f;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIOID;RP;5f202010-79a5
-11d0-9020-00c04fc2d4cf;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;C
IIOID;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;4828cc14-1437-45bc-9b07
-ad6f015e5f28;RU)(OA;CIIOID;RP;bc0ac240-79a9-11d0-9020-00c04fc2d4cf;b
f967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIOID;RP;59ba2f42-79a2-11
d0-9020-00c04fc2d3cf;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO
ID;RP;59ba2f42-79a2-11d0-9020-00c04fc2d3cf;bf967aba-0de6-11d0-a285-00
aa003049e2;RU)(OA;CIIOID;RP;037088f8-0ae1-11d2-b422-00a0c968f939;4828
cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIOID;RP;037088f8-0ae1-11d2-
b422-00a0c968f939;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIOID;
RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa0
03049e2;ED)(OA;CIIOID;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9
c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIOID;RP;b7c69e6d-2cc7-11d2-854
e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIOID;LCR
PLORC;;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIOID;LCRPLORC;;b
f967a9c-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIOID;LCRPLORC;;bf967aba-
0de6-11d0-a285-00aa003049e2;RU)(OA;CIID;RPWPCR;91e647de-d96f-4b70-955
7-d63ff4f3ccd8;;PS)(A;CIID;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;EA)(A;CIID;LC
;;;RU)(A;CIID;CCLCSWRPWPLOCRSDRCWDWO;;;BA)
Gyakorlatilag egy ugyanolyan kimenetet kaptunk, mint a fájlrendszer esetében, persze az AD-ben egy kicsit bonyolultabbak ezek a biztonsági leírók, hiszen itt minden objektumnak a sémában definiált jó néhány explicit engedélybejegyzése is van.