This morning in my PowerShell class, we looked at creating calculated properties. Fortunately for us, I found one of our fellow IT professionals on PowerShell.com that needed a little bit of help that involved calculated properties. This individual was attempting to enumerate all of the Organizational Units in their Active Directory domain and extract the username in the MangedBy property. The thing is, the ManagedBy property gives you the distinguished name of the user, not the user name.
Get-ADOrganizationalUnit -filter * |
Select-Object -Property Name, ManagedBy
Groups
Printers
Printers CN=James,CN=Users,DC=Adatum,DC=com
Printers
By using calculated properties and controlling the order of operation, we can perform an extra step and extract the username using the distinguished name.
1 2 3 4 | Get-ADOrganizationalUnit -filter * | Select-Object -Property Name, @{N="ManagedBy";E={Get-ADUser -Identity $_.ManagedBy | Select -expandProperty SamAccountName}} |
Line 1 gathers all Organizational Unit objects in Active Directory
Line 2 selects out the Name property and leaves a comma so we can continue on the next line.
Line 3 starts our calculated property. We give new our property the name ManagedBy. The value, or expression, of this property is actual the result of the PowerShell command Get-ADUser and the result of line 4. The expression in line 3 gets the User object for whom ever is in the Organizational Unit’s ManagedBy property. It then sends that object to Select-Object to extract out the actual SamAccountName. The SamAccountName is the actual value of our calculated property.
Comments