Get-ADPrincipalGroupMembership按照我在Expression中需要的方式工作

时间:2019-04-29 21:29:02

标签: powershell csv active-directory

我正在编写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文件,其中列出了上面的信息,并且只列出了安全组的列表,但是现在它的工作方式让我无所不用其极,而且很混乱。

1 个答案:

答案 0 :(得分:0)

如此处建议-link,您可以使用

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