共用方式為


Microsoft用於群組管理的 Entra 第 2 版 Cmdlet

本文包含如何使用 PowerShell 在 entra 識別符Microsoft中管理群組的範例,Microsoft Entra 的一部分。 它也會告訴您如何使用 Microsoft Graph PowerShell 模組進行設定。 首先,您必須 下載 Microsoft Graph PowerShell 模組

安裝 Microsoft Graph PowerShell 模組

若要安裝 MgGroup PowerShell 模組,請使用下列命令:

    PS C:\Windows\system32> Install-module Microsoft.Graph

若要確認模組已準備好使用,請使用下列命令:

PS C:\Windows\system32> Get-Module -Name "*graph*"

ModuleType Version    PreRelease Name                                ExportedCommands
---------- -------    ---------- ----                                ----------------
Script     1.27.0                Microsoft.Graph.Authentication      {Add-MgEnvironment, Connect-MgGraph, Disconnect-MgGraph, Get-MgContext…}
Script     1.27.0                Microsoft.Graph.Groups              {Add-MgGroupDriveListContentTypeCopy, Add-MgGroupDriveListContentTypeCopyF…

現在,您可以開始使用模組中的 Cmdlet。 如需 Microsoft Graph 模組中 Cmdlet 的完整描述,請參閱 Microsoft Graph PowerShell 的在線參考檔

線上到目錄

您必須先將PowerShell工作階段連線到您想要管理的目錄,才能使用 Microsoft Graph PowerShell Cmdlet 開始管理群組。 使用下列命令:

    PS C:\Windows\system32> Connect-MgGraph -Scopes "Group.ReadWrite.All"

Cmdlet 會提示您輸入要用來存取目錄的認證。 在此範例中,我們使用 karen@drumkit.onmicrosoft.com 來存取示範目錄。 Cmdlet 會傳回確認,以顯示工作階段已成功連線到您的目錄:

    Welcome To Microsoft Graph!

現在,您可以使用 MgGraph Cmdlet 來管理目錄中的群組。

擷取

若要從您的目錄中擷取現有的群組,請使用 Get-MgGroups Cmdlet。

若要擷取目錄中的所有群組,請使用不含參數的 Cmdlet:

    PS C:\Windows\system32> Get-MgGroup -All

Cmdlet 會傳回連線目錄中的所有群組。

您可以使用 -GroupId 參數來擷取指定群組 objectID 的特定群組:

    PS C:\Windows\system32> Get-MgGroup -GroupId 5e3eba05-6c2b-4555-9909-c08e997aab18 | fl

Cmdlet 現在會傳回 objectID 符合您所輸入參數值的群組:

AcceptedSenders               :
AllowExternalSenders          :
AppRoleAssignments            :
AssignedLabels                :
AssignedLicenses              :
AutoSubscribeNewMembers       :
Calendar                      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCalendar
CalendarView                  :
Classification                :
Conversations                 :
CreatedDateTime               : 14-07-2023 14:25:49
CreatedOnBehalfOf             : Microsoft.Graph.PowerShell.Models.MicrosoftGraphDirectoryObject
DeletedDateTime               :
Description                   : Sales and Marketing
DisplayName                   : Sales and Marketing
Id                            : f76cbbb8-0581-4e01-a0d4-133d3ce9197f
IsArchived                    :
IsAssignableToRole            :
IsSubscribedByMail            :
LicenseProcessingState        : Microsoft.Graph.PowerShell.Models.MicrosoftGraphLicenseProcessingState
Mail                          : SalesAndMarketing@M365x64647001.onmicrosoft.com
MailEnabled                   : True
MailNickname                  : SalesAndMarketing
RejectedSenders               :
RenewedDateTime               : 14-07-2023 14:25:49
SecurityEnabled               : True

您可以使用 -filter 參數來搜尋特定群組。 此參數會採用 ODATA 篩選子句,並傳回符合篩選的所有群組,如下列範例所示:

    PS C:\Windows\system32> Get-MgGroup -Filter "DisplayName eq 'Intune Administrators'"


    DeletionTimeStamp            :
    ObjectId                     : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    ObjectType                   : Group
    Description                  : Intune Administrators
    DirSyncEnabled               :
    DisplayName                  : Intune Administrators
    LastDirSyncTime              :
    Mail                         :
    MailEnabled                  : False
    MailNickName                 : 4dd067a0-6515-4f23-968a-cc2ffc2eff5c
    OnPremisesSecurityIdentifier :
    ProvisioningErrors           : {}
    ProxyAddresses               : {}
    SecurityEnabled              : True

注意

MgGroup PowerShell Cmdlet 會實作 OData 查詢標準。 如需詳細資訊,請參閱使用 OData 端點在 OData 系統查詢選項中$filter

以下是示範如何提取未套用到期原則的所有群組的範例

Connect-MgGraph -Scopes 'Group.Read.All'
Get-MgGroup -ConsistencyLevel eventual -Count groupCount -Filter "NOT (expirationDateTime+ge+1900-01-01T00:00:00Z)" | Format-List Id

此範例與上一個範例相同,但腳本也會將結果匯出至 CSV。

Connect-MgGraph -Scopes 'Group.Read.All'
Get-MgGroup -ConsistencyLevel eventual -Count groupCount -Filter "NOT (expirationDateTime+ge+1900-01-01T00:00:00Z)" | Format-List Id |Export-Csv -Path {path} -NoTypeInformation

最後一個範例示範如何只擷取屬於Teams的群組

Get-MgGroup -ConsistencyLevel eventual -Count groupCount -Filter "NOT (expirationDateTime+ge+1900-01-01T00:00:00Z) and resourceProvisioningOptions/any(p:p eq 'Team')" | Format-List Id, expirationDateTime, resourceProvisioningOptions

建立群組

若要在目錄中建立新的群組,請使用 New-MgGroup Cmdlet。 此 Cmdlet 會建立名為 「Marketing」 的新安全組:

$param = @{
 description="My Demo Group"
 displayName="DemoGroup"
 mailEnabled=$false
 securityEnabled=$true
 mailNickname="Demo"
}

New-MgGroup @param

更新群組

若要更新現有的群組,請使用 Update-MgGroup Cmdlet。 在此範例中,我們會變更 「Intune Administrators」 群組的 DisplayName 屬性。 首先,我們會使用 Get-MgGroup Cmdlet 來尋找群組,並使用 DisplayName 屬性進行篩選:

    PS C:\Windows\system32> Get-MgGroup -Filter "DisplayName eq 'Intune Administrators'"


    DeletionTimeStamp            :
    ObjectId                     : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    ObjectType                   : Group
    Description                  : Intune Administrators
    DirSyncEnabled               :
    DisplayName                  : Intune Administrators
    LastDirSyncTime              :
    Mail                         :
    MailEnabled                  : False
    MailNickName                 : 4dd067a0-6515-4f23-968a-cc2ffc2eff5c
    OnPremisesSecurityIdentifier :
    ProvisioningErrors           : {}
    ProxyAddresses               : {}
    SecurityEnabled              : True

接下來,我們將 Description 屬性變更為新的值 「Intune 裝置系統管理員」:

    PS C:\Windows\system32> Update-MgGroup -GroupId 958d212c-14b0-43d0-a052-d0c2bb555b8b -Description "Demo Group Updated"

現在,如果我們再次找到群組,就會看到 Description 屬性已更新,以反映新的值:

    PS C:\Windows\system32> Get-MgGroup -GroupId 958d212c-14b0-43d0-a052-d0c2bb555b8b | select displayname, description

    DisplayName Description
    ----------- -----------
    DemoGroup   Demo Group Updated

刪除群組

若要從目錄中刪除群組,請使用 Remove-MgGroup Cmdlet,如下所示:

    PS C:\Windows\system32> Remove-MgGroup -GroupId 958d212c-14b0-43d0-a052-d0c2bb555b8b

管理群組成員資格

新增成員

若要將新成員新增至群組,請使用 New-MgGroupMember Cmdlet。 此命令會將成員新增至我們在上一個範例中使用的 Intune Administrators 群組:

    PS C:\Windows\system32> New-MgGroupMember -GroupId f76cbbb8-0581-4e01-a0d4-133d3ce9197f -DirectoryObjectId a88762b7-ce17-40e9-b417-0add1848eb68

-GroupId 參數是我們想要新增成員之群組的 ObjectID,而 -DirectoryObjectId 是我們想要新增為群組成員的使用者 ObjectID。

取得成員

若要取得群組的現有成員,請使用 Get-MgGroupMember Cmdlet,如下列範例所示:

    PS C:\Windows\system32> Get-MgGroupMember -GroupId 2c52c779-8587-48c5-9d4a-c474f2a66cf4

Id                                   DeletedDateTime
--                                   ---------------
aaaaaaaa-bbbb-cccc-1111-222222222222
bbbbbbbb-cccc-dddd-2222-333333333333

移除成員

若要移除我們先前新增至群組的成員,請使用 Remove-MgGroupMember Cmdlet,如下所示:

    PS C:\Windows\system32> Remove-MgGroupMemberByRef -DirectoryObjectId 00aa00aa-bb11-cc22-dd33-44ee44ee44ee -GroupId 2c52c779-8587-48c5-9d4a-c474f2a66cf4

驗證成員

若要確認使用者的群組成員資格,請使用 Select-MgGroupIdsUserIsMemberOf Cmdlet。 此 Cmdlet 會採用其參數來檢查群組成員資格的使用者 ObjectId,以及要檢查成員資格的群組清單。 群組清單必須以 「Microsoft.Open.AzureAD.Model.GroupIdsForMembershipCheck」 類型的複雜變數形式提供,因此我們必須先建立具有該類型的變數:

Get-MgUserMemberOf -UserId 00aa00aa-bb11-cc22-dd33-44ee44ee44ee

Id                                   DisplayName Description GroupTypes AccessType
--                                   ----------- ----------- ---------- ----------
5dc16449-3420-4ad5-9634-49cd04eceba0 demogroup   demogroup    {Unified}

傳回的值是此用戶所屬群組的清單。 您也可以使用 Select-MgGroupIdsContactIsMemberOf、Select-MgGroupIdsGroupIdsGroupIsMemberOf 或 Select-MgGroupIdsServicePrincipalIsMemberOf,來套用此方法來檢查指定群組列表的聯繫人、群組或服務主體成員資格

停用使用者建立群組

您可以防止非系統管理員使用者建立安全組。 Microsoft Online Directory Services (MSODS) 中的預設行為是允許非系統管理員使用者建立群組,無論自助式群組管理 (SSGM) 是否也已啟用。 SSGM 設定只會控制 我的應用程式 存取面板中的行為。

若要停用非系統管理員使用者的群組建立:

  1. 確認允許非系統管理員使用者建立群組:

    PS C:\> Get-MgBetaDirectorySetting | select -ExpandProperty values
    
     Name                            Value
     ----                            -----
     NewUnifiedGroupWritebackDefault true
     EnableMIPLabels                 false
     CustomBlockedWordsList
     EnableMSStandardBlockedWords    false
     ClassificationDescriptions
     DefaultClassification
     PrefixSuffixNamingRequirement
     AllowGuestsToBeGroupOwner       false
     AllowGuestsToAccessGroups       true
     GuestUsageGuidelinesUrl
     GroupCreationAllowedGroupId
     AllowToAddGuests                true
     UsageGuidelinesUrl
     ClassificationList
     EnableGroupCreation             true
    
  2. 如果傳回 EnableGroupCreation : True,則非系統管理員使用者可以建立群組。 若要停用此功能:

     Install-Module Microsoft.Graph.Beta.Identity.DirectoryManagement
     Import-Module Microsoft.Graph.Beta.Identity.DirectoryManagement
     $params = @{
     TemplateId = "62375ab9-6b52-47ed-826b-58e47e0e304b"
     Values = @(		
     	@{
     		Name = "EnableGroupCreation"
     		Value = "false"
     	}		
     )
     }
     Connect-MgGraph -Scopes "Directory.ReadWrite.All"
     New-MgBetaDirectorySetting -BodyParameter $params
    
    

管理群組的擁有者

若要將擁有者新增至群組,請使用 New-MgGroupOwner Cmdlet:

    PS C:\Windows\system32> New-MgGroupOwner -GroupId 0e48dc96-3bff-4fe1-8939-4cd680163497 -DirectoryObjectId 92a0dad0-7c9e-472f-b2a3-0fe2c9a02867

-GroupId 參數是我們想要新增擁有者之群組的 ObjectID,而 -DirectoryObjectId 是我們想要新增為擁有者的使用者或服務主體的 ObjectID。

若要擷取群組的擁有者,請使用 Get-MgGroupOwner Cmdlet:

    PS C:\Windows\system32> Get-MgGroupOwner -GroupId 0e48dc96-3bff-4fe1-8939-4cd680163497

Cmdlet 會傳回指定群組的擁有者清單(使用者和服務主體):

    Id                                       DeletedDateTime
    --                                       ---------------
    8ee754e0-743e-4231-ace4-c28d20cf2841
    85b1df54-e5c0-4cfd-a20b-8bc1a2ca7865
    4451b332-2294-4dcf-a214-6cc805016c50

如果您想要從群組中移除擁有者,請使用 Remove-MgGroupOwnerByRef Cmdlet:

    PS C:\Windows\system32> Remove-MgGroupOwnerByRef -GroupId 0e48dc96-3bff-4fe1-8939-4cd680163497 -DirectoryObjectId 92a0dad0-7c9e-472f-b2a3-0fe2c9a02867

保留的別名

建立群組時,特定端點可讓使用者指定mailNickname或別名做為群組電子郵件位址的一部分。 具有下列高許可權電子郵件別名的群組只能由Microsoft Entra 全域管理員建立。 

  • 虐待
  • 管理
  • administrator
  • hostmaster
  • 管家
  • 郵政
  • secure
  • 安全性
  • ssl-admin
  • 網站管理員

群組回寫至內部部署

今天,許多群組仍會在 內部部署的 Active Directory 中管理。 若要回應將雲端群組同步處理回內部部署的要求,可以使用 Microsoft Entra 雲端同步處理,Microsoft Entra 標識符的群組回寫功能。

重要

2024 年 6 月 30 日 之後,Microsoft Entra Connect 同步中的群組回寫公開預覽版 v2 將不再提供。 這項功能將會在此日期中止,而且連線同步將不再支援您向 Active Directory 布建雲端安全性群組。 此功能將繼續在停產日期以外運作;不過,此日期之後將不再收到支援,而且隨時可能停止運作,而不通知。

我們會在 Microsoft Entra 雲端同步中提供類似的功能,稱為群組布建至 Active Directory,您可以加以使用,而不是使用 群組回寫 v2 將雲端安全組布建至 Active Directory。 我們正努力在雲端同步中增強這項功能,以及我們在雲端同步中開發的其他新功能。

在 [連線同步] 中使用此預覽功能的客戶應該 將設定從 [連線同步] 切換至 [雲端同步]。您可以選擇將所有混合式同步移至雲端同步 (如果支援您的需求)。 您也可以並排執行雲端同步,並只將布建至 Active Directory 的雲端安全組移至雲端同步。

對於將 Microsoft 365 群組布建至 Active Directory 的客戶,您可以繼續使用群組回寫 v1 來進行這項功能。

您可以使用使用者同步處理精靈,評估是否只移至雲端同步。

下一步

您可以在 Microsoft Entra Cmdlet 找到更多 Azure Active Directory PowerShell 檔