首页 > 解决方案 > Get-ADPrincipalGroupMembership 在 Expression 中按我需要的方式工作

问题描述

我正在编写一个 PowerShell 脚本来提取用户信息的 AD 报告。报告的大部分工作都很好,但我在让组成员正常工作时遇到问题。

Get-ADPrincipalGroupMembership -identity | select name

它自己工作,只给我一个干净的权限列表,但是将信息传递到选择名称中并不能在我的表达式中工作。它什么也不返回。如何仅过滤每个组的名称,同时仍传递每个要处理的用户。

到目前为止,我尝试过的任何方法都无法返回格式化列表。我总是以太多数据或空列结束。我也尝试过在事后清理数据,但我无法让正则表达式做我想做的事情。下面列出了我的(非功能性)草稿。

#Clean up Group Membership data
$test = Import-Csv $csvfile

$test | ForEach-Object {
    $_.Group_Membership = $_.Group_Membership.Replace('(?<=OU=").*?(?=/,)', ' ')
    $_.Group_Membership = $_.Group_Membership.Replace('(?<=DC=").*?(?=/,)', ' ')
}

$test | Export-Csv $csvfile -NoType
$AllADUsers = Get-ADUser -Server $ADServer -SearchBase $SearchBase -Properties * -Filter *

$AllADUsers |
    Select-Object @{Label="First Name";Expression={$_.GivenName}},
        @{Label="Last Name";Expression={$_.Surname}},
        @{Label="Display Name";Expression={$_.DisplayName}},
        @{Label="Username";Expression={$_.SamAccountName}},
        @{Label="Job Title";Expression={$_.Title}},
        @{Label="Company";Expression={$_.Company}},
        @{Label="Email";Expression={$_.Mail}},
        @{Label="Account Status";Expression={if (($_.Enabled -eq 'TRUE')) {'Enabled'} else {'Disabled'}}},
        @{Label="Last LogOn Date";Expression={$_.LastLogonDate}},
        @{Label="Group_Membership";Expression={$_.SamAccountName | Get-ADPrincipalGroupMembership}} |
    Export-Csv -Path $csvfile -NoTypeInformation

运行此脚本后,我想要一个 CSV 文件,其中列出了上述信息和安全组列表,但它现在的工作方式,我得到了一切,而且很乱。

标签: powershellcsvactive-directory

解决方案


如建议here- link,您可以使用

Get-ADPrincipalGroupMembership -identity test | out-string -stream | sls -caseSensitive "name"

推荐阅读