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

PowerShell-检查用户是否是组X的成员(“Get-MsolGroupMember”vs.“Get-DistributionGroupMember”),powershell,office365,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 } 但由于未知原因,返回的不是所有成员。我在1-2小时前添加了两个用户,

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

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

if($Office365User.ObjectId -in $members) {
   # ... user already a member of group Y
}
但由于未知原因,返回的不是所有成员。我在1-2小时前添加了两个用户,这些用户不包括在结果集中

我的下一种方法使用cmdlet
Get DistributionGroupMember
,但集合中的对象没有support属性
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
} 
这导致了以下问题:

  • 为什么返回
    Get MsolGroupMember
    而不是该组的所有成员
  • 将<代码>原SMPTPosie<代码>与“代码> USENTrimPaldNeX/CODE >进行比较”(“我必须考虑的情况是:<代码> UsTrimePrabeNo>代码>与<代码>原始SMTPADATION/COD> >)
  • 如果用户X是组Y的成员,有什么更好的方法来测试

  • 您是否尝试使用Get UnifiedGroupLinks?MS不断更改Office365 cmdlet及其输出。根据technet的说法,您现在必须使用这些cmdlet。UnifiedGroup似乎适用于“Office 365组”,但不适用于通讯组您所说的是Office 365组,而不是“常规”通讯组。Office365组(统一组)是一种特殊类型的组。365组!=exchange通讯组(365组实际上位于Sharepoint Online中)