Экспорт определенного вывода из массива - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть код ниже, который отображает все группы, членами которых являются пользователи, имеющие SamAccountName, начинающиеся с 'X', и экспортирует выходные данные в файл CSV:

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" 

Код работает нормально, но у меня есть некоторые проблемы с выходом.Действительно, он возвращает все группы, членами которых являются пользователи, но мне нужно экспортировать только одну конкретную группу (группу, которая начинается с 'G-ORG') для каждого пользователя.

Как я могу отфильтровать вывод толькоесть группы, начинающиеся с 'G-ORG' для каждого пользователя?

Пример вывода:

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...

Требуемый вывод:

User1,"CN=G-ORG-MULTI-CANAL-APPLICATION"
USER2,"CN=G-ORG-ARCHI"
USER3,"CN=G-ORG-IT;"
USER...

1 Ответ

0 голосов
/ 22 февраля 2019

Просто отфильтруйте список участников по отличительным именам, которые начинаются с CN=G-ORG- вместо объединения всех из них:

$_.memberof | Where-Object { $_.StartsWith('CN=G-ORG-') }

Если совпадений может быть несколько, вы можете присоединиться к результатам

($_.memberof | Where-Object {...}) -join ';'

или выберите один из них (например, первый)

$_.memberof | Where-Object {...} | Select-Object -First 1

в зависимости от требований.

...