PowerShell - 检查用户是X组的成员(" Get-MsolGroupMember" vs." Get-DistributionGroupMember")

时间:2017-05-31 11:10:14

标签: powershell office365

我很难检查用户X是否是某些Office 365组的成员。我尝试了以下代码:

$members = (Get-MsolGroupMember -GroupObjectId $group.ObjectId -All).ForEach('ObjectId')

if($Office365User.ObjectId -in $members) {
   # ... user already a member of group Y
}

但由于未知原因,返回Get-MsolGroupMember并非所有成员。我在1-2小时前添加了两个用户,这些用户不包含在结果集中。

我的下一个方法使用了cmdlet Get-DistributionGroupMember,但集合中的对象没有支持属性ObjectId

我目前正在使用此代码来测试用户X是否是Y组的成员:

function Test-UserisAlreadyGroupMember() {
    param(
        [PARAMETER(Mandatory)]
        [Microsoft.Online.Administration.Group] 
        $Group,
        [PARAMETER(Mandatory)]
        [Microsoft.Online.Administration.User]
        $Office365User
    )

    $isMember = $false;
    if($Group.GroupType -eq [GroupType]::DistributionList) {

        $members = (Get-DistributionGroupMember -Identity $Group.EmailAddress).ForEach('PrimarySmtpAddress')  

        $isMember = ($Office365User.UserPrincipalName -in $members)  

    }
    else {

        $members =  (Get-MsolGroupMember -GroupObjectId $group.ObjectId -All).ForEach('ObjectId')

        $isMember = ($Office365User.ObjectId -in $members)
    }
    $isMember
} 

这导致以下问题:

  1. 为什么不返回Get-MsolGroupMember并非该组的所有成员?
  2. 是"保存"将PrimarySmtpAddressUserPrincipalName进行比较(我是否必须考虑UserPrincipalNamePrimarySmtpAddress不相同的情况)
  3. 如果用户X是Y组的成员,有什么更好的方法来测试?

0 个答案:

没有答案