从数组导出特定输出

Export specific output from an array

我有下面的代码,它显示了拥有以 'X' 开头的 SamAccountName 的用户所属的所有组,并将输出导出到 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" 

代码工作正常,但我的输出有一些问题。实际上它 returns 用户所属的所有组,但我只需要为每个用户导出一个特定组(以 '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...

简单地过滤以 CN=G-ORG- 开头的专有名称的成员列表,而不是加入所有成员:

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

如果可能有多个匹配项,您可以加入结果

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

或select其中之一(例如第一个)

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

视需求而定。