【问题标题】:Get-ADPrincipalGroupMembership Fails when any user group name has "/"Get-ADPrincipalGroupMembership 当任何用户组名称有“/”时失败
【发布时间】:2016-03-05 23:44:43
【问题描述】:

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

问题是,当使用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 文档和 检查服务器跟踪日志。

谁能给我一个替代解决方案?我还没有找到好的。

【问题讨论】:

  • 无法复制。哪个操作系统版本,错误是什么?
  • Win7 Ent,Powershell 4.0; Get-ADPrincipalGroupMembership :由于内部错误,服务器无法处理请求。有关错误的详细信息,请在服务器上打开 IncludeExceptionDetailInFaults(来自 ServiceBehaviorAttribute 或来自 配置行为)以便将异常信息发送回客户端,或者根据 Microsoft .NET Framework 打开跟踪3.0 SDK 文档并检查服务器跟踪日志。
  • 您是否尝试过转义斜线? *`/* 或 *\/* 或许
  • 不行,你是怎么逃出来的?
  • 同上,在斜杠前使用反引号,或者反斜杠

标签: powershell active-directory


【解决方案1】:

目前在连接上有一个未解决的错误。

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)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 2013-05-24
    相关资源
    最近更新 更多