PowerShell 5.1.16299.1146 Get-ADGroupMember出现操作错误

3

当一个组包含来自不同域的用户时,我遇到了

"发生了操作错误"

错误。

在PowerShell 5.1.14409.1018中,相同的代码可以正常工作。

Get-ADGroupMember -Server "MyDomain" -Identity "MyGroup" | ForEach-Object {$_.SamAccountName}

有人在版本5.1.16299.1146上使用Get-ADGroupMember时,当群组包含来自不同域的用户时会遇到问题吗?

Get-ADGroupMember:发生操作错误 在第1行第1个字符处: + Get-ADGroupMember -Server "MyDomain" "MyGroup ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified:(MyGroup:ADGroup) [Get-ADGroupMember],ADException + FullyQualifiedErrorId : ActiveDirectoryServer:8224,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember


请在您的问题中更新并粘贴完整的错误信息。(请记住,我们无法看到您的屏幕。) - Bill_Stewart
我无法复制这个问题 - 你是否使用了正确的域/组? - 注意我正在使用的PS版本是5.1.14393.2636。 - Matthew
域/组是正确的,同一行与5.1.14409.1018非常适配。 - PSnewbie
1个回答

4

Get-ADGroupMember 在处理外部安全主体的引用追踪方面非常糟糕。但是,您应该能够使用Get-ADGroupGet-ADObject手动完成它:

Function Get-ADGroupMemberFix {
    [CmdletBinding()]
    param(
        [Parameter(
            Mandatory = $true,
            ValueFromPipeline = $true,
            ValueFromPipelineByPropertyName = $true,
            Position = 0
        )]
        [string[]]
        $Identity,

        [string]
        $Server
    )

    begin {
        $additionalArguments = @{}
        if($PSBoundParameters.ContainsKey('Server')){
            $additionalArguments['Server'] = $Server
        }
    }

    process {
        foreach ($GroupIdentity in $Identity) {
            $Group = $null
            $Group = Get-ADGroup -Identity $GroupIdentity -Properties Member @additionalArguments
            if (-not $Group) {
                continue
            }
            Foreach ($Member in $Group.Member) {
                Get-ADObject $Member 
            }
        }
    }
}

Get-ADGroupMemberFix -Identity ''

(script above is a modified version of the script posted in the referenced reddit post by /u/markekraus)
您可以根据需要将所需的属性名称添加到Get-ADObject调用中。

这是一个不错的替代方案,它会输出更多的信息,希望对 OP 没有问题 - 编辑 - 我刚刚注意到,这似乎没有获取 {$_.SamAccountName} - Matthew
我以前从来没有遇到过 Get-ADGroupMember 的问题,直到 5.1.16299.1146 版本。看起来,这个解决方法只返回 DistinguishedName、Name...我需要获取成员的 SamAccountNames。 - PSnewbie
1
将成员的DN管道传输到Get-ADUser并选择sAMAccountName。 - Bill_Stewart
或者在 Get-ADObject 调用中添加“-Properties SamAccountName” - 这可能是 Mathias 最后回复行的缩进。 - CWoods

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接