Fun with Active Directory (Playing Around Series)
This is the first in a series of posts call “Playing Around Series.” This series will basically be demo Videos of different Snapins/.NET Classes and their use.
In this entry I run through creating a DirectoryEntry, DirectorySearcher, and using the System.DirectoryServices.ActiveDirectory.Domain Class.
Note: This is a fast run through. I STRONGLY recommend pausing and reading the Comments. Best Viewed Full Screen
Get the Flash Player to see this player.
Special Shout-out to JayKul and Jeffrey Snover for the Start-Demo script.
http://www.powershellcentral.com/scripts/302
Demo Text
-
#
-
# Lets start off by looking at DirectoryEntry
-
#
-
$DE = New-Object System.DirectoryServices.DirectoryEntry("LDAP://CN=tstUsr101,OU=MyUsers,DC=corp,DC=lab")
-
#
-
# First lets see what we have access to
-
#
-
$DE | Get-Member
-
#’
-
# Hmmm.. doesn’t seem like much. OH WAIT! Remember Powershell abstracts the class… Lets add psbase
-
#
-
$DE.psbase | Get-Member
-
#
-
# Lets look at what properties are available.
-
#
-
$DE.psbase.Properties
-
#
-
# Thats more like it. You may also note that some AD properties are still missing.
-
# That is because that LDAP doesnt return all the properties. For these you need to "GET" them.
-
$DE.psbase.InvokeGet(‘msExchUMFaxID’)
-
#
-
# Using DirectoryEntry is fine if you know the DN of the object, but what if you need to search?
-
# Lets look at System.DirectoryServices.DirectorySearcher
-
#
-
# The Searcher needs some info so put that in variables first
-
#
-
$root = [ADSI]"" ## This is using the Type Accelerator we spoke about earlier… This is Gets the base
-
$filter = "(&(objectcategory=user))"
-
#
-
# Now Lets create the searcher
-
#
-
#
-
# That gets the searcher ready, but to execute we need to call findall() or findone()
-
#
-
$users = $searcher.findAll()
-
#
-
# Lets see what we got. We have alot so lets only pick the first 10
-
#
-
$users | select -first 10
-
#
-
# Tons of info, but notice that this is NOT the same as DirectoryEntry
-
#
-
$users | get-Member
-
#
-
# It still has the properties property, Lets look (but only the first 3)
-
#
-
$users | select -first 3 | %{$_.Properties}
-
#
-
# Finally Lets look at System.DirectoryDervices.ActiveDirectory.Domain
-
#
-
# We can use this to interactively browse around
-
#
-
#
-
# Lets assign that to variable to play with
-
#
-
$domain
-
#
-
# Lets see what this has to offer
-
#
-
$domain | get-member
-
#
-
# Tons of cool stuff here.
-
#
-
# We can find all domain controllers
-
$domain.FindAllDomainControllers()
-
#
-
# We Can look at our Domain FSMO
-
#
-
$domain | ft PdcRoleOwner,RidRoleOwner,InfrastructureRoleOwner
-
#
-
# I can even step the tree and get my forest root
-
#
-
$forest = $domain.Forest
-
$forest
-
#
-
# With our new found $forest object… what can do we do?
-
#
-
$forest | Get-Member
-
#
-
# WE can find all our GCs
-
#
-
$forest.FindAllGlobalCatalogs()
-
#
-
# We can look at the Forest Mode
-
#
-
$forest.ForestMode
-
#
-
# Look at the Forest FSMO
-
#
-
$forest | ft SchemaRoleOwner,NamingRoleOwner
-
#
-
# Even look at sites
-
$forest.Sites
-
#
-
# We can go on forever and ever. If you would like we can revisit this later.
-
#
tshell :: May.20.2008 :: All :: No Comments »
