当任何用户组名称包含" /"

时间:2015-12-01 21:45:55

标签: powershell active-directory

这真的很烦人,很难找到,但我已经在我的环境中证明了这一点,所以我想我会在这里发布它,希望能帮助更多的人解决它。

问题是,当使用Get-ADPrincipalGroupMembership -Identity $User.SamAccountName时,他们现有的一个组名(他们是其中的一员)在任何一个组的名称中都有一个/(正斜杠) ,它将终止该用户的错误。

所以,我跑Get-ADGroup -Filter {name -like "*/*"}看看我们有多少这样的团体,而且还有很多。当然,在我的脚本中,catch块正在找到很多人在这个cmdlet失败的地方。

foreach ($User in $Users) {
    try {
        $User_MemberOf = @()

        Get-ADPrincipalGroupMembership -Identity $User.SamAccountName |
            Select Name |
            Where-Object {$_.Name -like 'CBA-*'} |
            ForEach-Object { $User_MemberOf += @($_.Name) }

        foreach ($Group in $User_MemberOf) {
            New-Object PSObject -Property @{
                SID = $User.SamAccountName
                Name = $User.name
                Group = $Group 
            } | Export-Csv -Path $logs -NoTypeInformation -Append
        }
    } catch {
        New-Object PSObject -Property @{
            SID = $User.SamAccountName
            Name = $User.name
            Group = "Error processing this user" 
        } | Export-Csv -Path $logs -NoTypeInformation -Append
    }
}

错误讯息:

  

由于内部错误,服务器无法处理请求。   有关错误的更多信息,请打开   IncludeExceptionDetailInFaults(来自ServiceBehaviorAttribute   或者来自服务器上的配置行为)   命令将异常信息发送回客户端,或打开   跟踪Microsoft .NET Framework 3.0 SDK文档和   检查服务器跟踪日志。

有人能为我提供替代解决方案吗?我还找不到好的。

1 个答案:

答案 0 :(得分:2)

目前有一个关于连接的开放式错误。

https://connect.microsoft.com/PowerShell/Feedback/Details/1190397

一种潜在的解决方法:

$user = Get-ADUser $accountName  -Properties MemberOf
$groupMembership = New-Object System.Collections.ArrayList
foreach ($group in $user.MemberOf) {
     $groupMembership.Add((Get-ADGroup $group).SamAccountName)
}