列出所有拥有邮箱但不在名为Metalogix *的组中的用户。我需要一个PowerShell脚本来检查特定用户是否属于某个组,以及用户是否属于这些组中的任何一个。
我已经有了工作脚本:
Import-Module ActiveDirectory
$Users = Get-Mailbox -ResultSize "unlimited"
$Group = "Metalogix*"
foreach ($user in $Users) {
$Check = Get-ADPrincipalGroupMembership -Identity $User.sAMAccountName |
? { $_.Name -like $Group }
if ($Check -eq $null) {
Write-Output "$User.sAMAccountName is NOT part of this group"
} else {
$Results = Get-Mailbox -Identity $User.sAMAccountName |
select Name, sAMAccountName, PrimarySmtpAddress, Database |
Export-csv "c:\results1.csv" -NTI -Append
}
}
但是脚本没有递归地列出组,例如tester4-6是' Test Group 2'的成员,它是' Test Group 1'的成员。其余的都是直接的。我只能看到直接会员资格,而不是递归会员资格。
第二个问题:我希望所有用户都使用以" STR"开头的samaccountname前缀。
Test Group 1 tester1 tester2 -> Test Group 2 tester4 tester6
答案 0 :(得分:0)
我可能会使用递归函数。像这样:
port 443
答案 1 :(得分:0)
Get-ADPrincipalGroupMembership
不是递归的,但Get-ADGroupMember
是。
$Users = Get-Mailbox -ResultSize "unlimited"
$Group = 'Metalogix*'
$GroupMembers = Get-ADGroupMember -Identity $Group | Get-ADGroupMember -Recursive | Select-Object -ExpandProperty samAccountName
foreach ($User in $Users) {
if ($User -in $GroupMembers) {
Write-Output "User $User is in group $Group."
}
else {
Write-Output "User $User is not in group $Group."
}
}
这也更有效,因为您只获取一次组成员身份。
我远离我的服务器,所以将上述视为伪代码。