【问题标题】:Format Members property in Get-ADGroupGet-ADGroup 中的格式化成员属性
【发布时间】:2015-11-17 15:44:33
【问题描述】:

我有一个以下 PowerShell 命令,它对我很有用,给了我需要的结果(关于 AD 组及其成员的详细信息)

Get-ADGroup -Filter * -Properties * -SearchBase "CN=Users,DC=domain,DC=com" | 
    Select-Object -Property Name, Description, GroupCategory, Members | 
    Format-Table -AutoSize

但我想格式化 Members 属性以仅显示用户的 DisplayName,而不是他的整个 LDAP 路径。

Members 属性的输出是:

{CN=John Doe,CN=Users,DC=domain,DC=com, CN=Jane Doe,CN=Users, DC=domain, DC=com,...}

【问题讨论】:

    标签: powershell active-directory


    【解决方案1】:

    您可以使用计算属性添加自定义代码块,PowerShell 将执行该代码块来计算特定属性的值。

    首先,我们知道我们可以使用以下代码仅选择组的用户名:

     get-adgroupmember 'Domain Admins'| select Name
    

    现在,我们可以将它嵌入到之前的 Select-Object 命令中,如下所示:

    RegularProperty1,RegularProperty2,@{Name='Column Heading';Expression={<code to run>}}
    

    要将其添加到您的原始选择语句中:

    Name, Description, GroupCategory, @{Name='Members';exp={Get-adgroupmember $_.Name | Select -expand Name}}
    

    完成的结果如下所示:

    Get-ADGroup -Filter * -Properties * | 
       Select-Object -Property Name, Description, GroupCategory,`
      @{Name='Members';exp={Get-adgroupmember $_.Name | Select -expand Name}}  | 
           Format-Table -AutoSize
    

    【讨论】:

    • 无法完全弄清楚,谢谢 :-) 使用 Get-ADGroupMember 似乎比使用 Get-ADUser 更容易。
    • 我会高度建议您在涉及-Properties *时更新代码我知道您只是从OP中复制了它,但应该没有理由拉所有 属性。你甚至知道需要哪些。
    • 感谢@FoxDeploy,成功了。当我将其导出为 CSV 时,我丢失了逗号和 {} 括号,我该如何保留逗号,只是没有像 user1 user2 user3 这样的列表,如果它很痛苦,那也没关系。 @Matt 您是否只是因为我只会在这些属性上“工作”而考虑执行以下Get-ADGroup -Filter * -Properties Name, Description, GroupCategory, Members | Select-Object ...?感谢两位!
    • 是的,你可以丢掉括号。将计算的属性更改为如下所示:@{Name='Members';exp={(Get-adgroupmember $_.Name | Select -expand Name) -join ','}}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多