从数组导出特定输出

时间:2019-02-22 09:21:39

标签: arrays export output powershell-v3.0

我有下面的代码,显示具有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 :(得分:0)

仅对成员列表中以CN=G-ORG-开头的专有名称进行过滤,而不是将它们全部加入:

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

如果有不止一场比赛,则可以加入结果

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

或选择其中一个(例如第一个)

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

根据要求。