by charliek at 2013-03-31 21:51:10
My Mission] Get a list of ALL the groups for a list of users and output the list in a specific delimited format.by poshoholic at 2013-04-01 06:26:35
I found the following script that works…except that it is not in the format that I need.
$FilePath = "c:\temp\output.csv"
Import-Csv c:\temp\users.csv |
Get-QADUser -Identity {$.user} -SizeLimit 0 | Select-Object name, sAMAccountName, @{Name="Groups";Expression={(Get-QADMemberOf $ | Select-Object -expandProperty Name) -join ";"}} | export-csv $FilePath
Questions (Where I need help)]
1) How can I get the output to look something like this:
user 1, group1
user 1, group2
user 1, group3
user 2, group1
user 2, group3
user 3, group4
user 3, group5
2) How might I incorportate the status (enabled/disabled) of the account into the report? It might look like this:
user 1, Enables, group1
user 1, Enabled, group2
user 1, Enabled, group3
user 2, Disabled, group1
user 2, Disabled, group3
user 3, Enabled, group4
user 3, Enabled, group5
Your help is very much appreciated! I’ve spent many hours on what is likely a very simple issue.
Here’s a sample (untested) script that should give you what you are after, or at least get you closer to the destination:by charliek at 2013-04-01 11:44:40$FilePath = "c:\temp\output.csv"
Import-Csv c:\temp\users.csv |
Get-QADUser -Identity {$.user} -SizeLimit 0 | ForEach-Object {
foreach ($group in Get-QADMemberOf $) {
$_ | Select-Object -Property Name,SamAccountName,Enabled,@{Name='Group';Expression={$group.Name}}
}
} | export-csv $FilePath
Perfect! Many Many Many Thanks.by charliek at 2013-04-05 20:12:50
Any pointers on how I might be able to extend the script below to include the description and notes for each group?by ArtB0514 at 2013-04-08 09:03:53$FilePath = "c:\temp\output.csv"
Import-Csv c:\temp\users.csv |
Get-QADUser -Identity {$.user} -SizeLimit 0 | ForEach-Object {
foreach ($group in Get-QADMemberOf $) {
$_ | Select-Object -Property Name,SamAccountName,@{Name=‘Group’;Expression={$group.Name}}
}
} | export-csv $FilePath
How about something like this:$FilePath = "c:\temp\output.csv"
$UserData = @()
Import-Csv c:\temp\users.csv |
Get-QADUser -Identity {$.user} -SizeLimit 0 | ForEach-Object {
$UserData += New-Object PSObject @{
'Name' = $.Name
'SamAccountName' = $.SamAccountName
'Description' = $.Description
'Notes' = $.Notes
'Group' = ($.AllMemberOf | foreach {($_.Split(','))[0].Substring(3)}) -join "`n"
}
}
$UserData | Select name,SamAccountName,Description,Notes,Group | export-csv $FilePath -NoTypeInformation