这真的很烦人,很难找到,但我已经在我的环境中证明了这一点,所以我想我会在这里发布它,希望能帮助更多的人解决它。
问题是,当使用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文档和 检查服务器跟踪日志。
有人能为我提供替代解决方案吗?我还找不到好的。
答案 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)
}