【发布时间】:2019-04-29 21:29:01
【问题描述】:
我正在编写一个 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 文件,其中列出了上述信息和安全组列表,但现在它的工作方式,我得到了所有东西,而且很乱。
【问题讨论】:
-
$_.SamAccountName | Get-ADPrincipalGroupMembership->(Get-ADPrincipalGroupMembership $_.SamAccountName | Select-Object -Expand Name) -join ';'? -
这很好用。很干净。
标签: powershell csv active-directory