This is great, but I’m using it for an audit right now and found it to have a major flaw. It only deals appropriately with domain users, not domain groups. Groups are just as important as users to list when auditing the membership of something. In the current state, this script essentially prints a blank line where a group would go; it doesn’t even say the name of the group. Is there a way to modify the script so it gets non-user objects, such as groups and computers (also have some groups with computers in them)? Below is the current version of the script I’m working on. I added additional fields since I need them also. >>>>> $GroupInfo = ‘’ | Select ‘Group Name’,‘Group Description’,‘LogonName’,‘Name’,‘Description’,‘Type’,‘AccountIsDisabled’,‘Department’,‘Title’,‘whenCreated’,‘whenChanged’,‘LastLogon’,‘PasswordNeverExpires’,‘AccountExpires’,‘AccountIsExpired’ $AllGroups = @() #The -SearchRoot value determines the groups that are checked. Some examples are shown below. # * All groups: -SearchRoot “ucn.net/Security Groups” # * Specific group: -SearchRoot “ucn.net/Security Groups/Domain Admins” $MyGroups = Get-QADGroup -SearchRoot “inucn.com/INUCN/Accounts/Groups/Domain Admins” -DontUseDefaultIncludedProperties -IncludedProperties Name,Description,Member | select Name,Description,Member foreach($Group in $MyGroups){ $GroupInfo.‘Group Name’ = $Group.Name $GroupInfo.‘Group Description’ = $Group.Description foreach($Member in $Group.Member){ $User = Get-QADUser $Member -DontUseDefaultIncludedProperties -IncludedProperties LogonName,Name,Description,Type,AccountIsDisabled,Department,Title,whenCreated,whenChanged,LastLogon,PasswordNeverExpires,AccountExpires,AccountIsExpired | select LogonName,Name,Description,Type,AccountIsDisabled,Department,Title,whenCreated,whenChanged,LastLogon,PasswordNeverExpires,AccountExpires,AccountIsExpired $GroupInfo.‘LogonName’ = $User.LogonName $GroupInfo.‘Name’ = $User.Name $GroupInfo.‘Description’ = $User.Description $GroupInfo.‘Type’ = $User.Type $GroupInfo.‘AccountIsDisabled’ = $User.AccountIsDisabled $GroupInfo.‘Department’ = $User.Department $GroupInfo.‘Title’ = $User.Title $GroupInfo.‘whenCreated’ = $User.whenCreated $GroupInfo.‘whenChanged’ = $User.whenChanged $GroupInfo.‘LastLogon’ = $User.LastLogon $GroupInfo.‘PasswordNeverExpires’ = $User.PasswordNeverExpires $GroupInfo.‘AccountExpires’ = $User.AccountExpires $GroupInfo.‘AccountIsExpired’ = $User.AccountIsExpired #It takes a while to go through a lot of goups. This just lets you watch so you don’t think it’s broken and cancel it. $GroupInfo | select ‘Group Name’,‘Group Description’,‘LogonName’,‘Name’,‘Description’,‘Type’,‘AccountIsDisabled’,‘Department’,‘Title’,‘whenCreated’,‘whenChanged’,‘LastLogon’,‘PasswordNeverExpires’,‘AccountExpires’,‘AccountIsExpired’ $AllGroups += $GroupInfo | Select ‘Group Name’,‘Group Description’,‘LogonName’,‘Name’,‘Description’,‘Type’,‘AccountIsDisabled’,‘Department’,‘Title’,‘whenCreated’,‘whenChanged’,‘LastLogon’,‘PasswordNeverExpires’,‘AccountExpires’,‘AccountIsExpired’ } } $AllGroups | Export-Csv AD_Group_Membership.csv -Append -NoTypeInformation #Export all the gathered data to a CSV file.