Import File
username
john peters
steve jobs
bill gates
Export files:
john peters.csv
username name
john peters group1
john peters group2
Steve jobs.csv
steve jobs group5
steve jobs group6
And so on…
The code I have so far will bring back the users and permissions in two columns. But I want them individually like above.
E.g.
username name
steve jobs group1
steve jobs group2
bill gates group1
bill gates group2
bill gates group3
Code so far:
Import-Csv C:\Users.csv |
ForEach-Object -pv user { Get-AdUser -filter "displayname -eq '$($_.username)'"} |
Get-ADprincipalGroupMembership |
Select-Object @{ n = 'samaccountname'; e = { $user.samaccountname } }, name |
Export-csv -path C:\UserPermiss.csv -NoTypeInformation
Any ideas on how to export the list of users & groups individually from 1 import file?
Cheers!
If i understand correctly your goal is to create many csv files as output, one per user with the groups listed?
You should use the Group-Object cmdlet to do this. I don’t have your exact case but i can give you a similar example with objects from Get-Process:
get-process | Group-Object Name |% {$_.Group | Export-CSV -Path "C:\temp\$($_.Name).csv" -NoTypeInformation}
This has two parts, the Group-Object will combine all elements with the same name into groups, then the |% (foreach) will loop through each group and pipe the contents of the group ($.Group) out to Export-CSV so you will get one csv per group. the name of the csv in my case included the name of the group $.Name.
ForEach-Object -pv user { Get-AdUser -filter "displayname -eq '$($_.username)'"} |
Get-ADprincipalGroupMembership |
Select-Object @{ n = 'samaccountname'; e = { $user.samaccountname } }, name |
Group-Object username |% { $_.Group |Export-csv -path C:\UserPermiss_$($_.Name).csv -NoTypeInformation }