I have the below code that displays all groups that users which have a SamAccountName starting with 'X' are members of, and that exports the output in a CSV file:
Get-ADUser -Filter {SamAccountName -like "X*"} -Properties memberof |
Select name, @{N="MemberOf";E={$_.memberof -join ";"}} |
Export-Csv "C:\Users\chicken\Desktop\export_powershell\extract_test.csv"
The code works fine, but I have some problems with the output. Indeed it returns all groups that users are members of, but I only need to export one specific group (the group that starts by 'G-ORG') for each user.
How can I filter the output to only have groups that start with 'G-ORG' for each user?
Example output:
User1,"CN=YVD_Access; CN=Proxy_ACCESS_GD; CN=RVH_BIS HSBC; CN=G-ORG-MULTI-CANAL-APPLICATION; CN=......"
USER2,"CN=G-ORG-ARCHI; CN=Proj_X; CN=Proj_X; CN=X_REF; CN=......"
USER3,"CN=HAV_SH; CN=G-ORG-IT; CN=EPH; CN=......"
USER...
Required output:
User1,"CN=G-ORG-MULTI-CANAL-APPLICATION"
USER2,"CN=G-ORG-ARCHI"
USER3,"CN=G-ORG-IT;"
USER...
Simply filter the member list for distinguished names that begin with CN=G-ORG-
instead of joining all of them:
$_.memberof | Where-Object { $_.StartsWith('CN=G-ORG-') }
If there could be more than one match you can then either join the results
($_.memberof | Where-Object {...}) -join ';'
or select one of them (e.g. the first)
$_.memberof | Where-Object {...} | Select-Object -First 1
depending on the requirements.