適用於群組管理的 Microsoft Entra 第 2 版 Cmdlet
本文包含的範例說明如何使用 PowerShell 管理 Microsoft Entra ID (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 的線上參考文件。
連線至目錄
使用 Microsoft Graph PowerShell Cmdlet 開始管理群組之前,您必須先將 PowerShell 工作階段連線至想要管理的目錄。 使用下列命令:
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 Device Administrators”︰
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
我們想要新增成員的群組,其 ObjectID 就是 -GroupId 參數,而我們想要新增為群組成員的使用者,其 ObjectID 為 -DirectoryObjectId。
取得成員
若要取得群組的現有成員,請使用 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-MgGroupIdsGroupIsMemberOf 或 Select-MgGroupIdsServicePrincipalIsMemberOf 套用這個方法,以檢查指定群組清單中的連絡人、群組或服務主體成員資格
停用您使用者的群組建立
您可以避免非管理使用者建立安全性群組。 Microsoft Online 目錄服務 (MSODS) 的預設行為是可讓非管理使用者建立群組,無論是否也啟用自助式群組管理 (SSGM)。 SSGM 設定只會在我的群組入口網站中控制行為。
若要停用非管理使用者的群組建立:
請確認允許非管理使用者建立群組:
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
如果它傳回
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
我們想要新增擁有者的群組,其 ObjectID 就是 -GroupId 參數,而我們想要新增為擁有者的使用者或服務主體,其 ObjectID 為 -DirectoryObjectId。
若要擷取群組的擁有者,請使用 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 全域系統管理員才能建立使用這些別名的群組。
- abuse
- 管理
- administrator
- hostmaster
- majordomo
- postmaster
- 根
- secure
- 安全性
- ssl-admin
- webmaster
將群組回寫至內部部署
目前,有許多群組仍在內部部署 Active Directory 中進行管理。 為满足將雲端群組同步回內部部署的要求,使用 Microsoft Entra 雲端同步的 Microsoft Entra ID 群組回寫功能現在已可供使用。
重要
在 2024 年 6 月 30 日之後,Microsoft Entra Connect 同步將不再提供群組回寫 v2 的公開預覽版。 這項功能將會在此日期中止,而且 Connect 同步也不再支援將雲端安全性群組佈建至 Active Directory。 該功能將在終止日期之後繼續運作;不過,在此日期之後它將不再獲得支援,而且可能隨時停止運作,恕不另行通知。
我們會在 Microsoft Entra 雲端同步中提供類似的功能,稱為將群組佈建至 Active Directory,您可以利用此功能來取代使用群組回寫 v2 將雲端安全性群組佈建至 Active Directory。 我們正努力在雲端同步中增強這項功能,以及我們在雲端同步中開發的其他新功能。
在 Connect 同步中使用此預覽功能的客戶,應該將其設定從 Connect 同步切換至雲端同步。您可以選擇將所有混合式同步移至雲端同步 (如果其支援您的需求)。 也可以並排執行雲端同步,並只將佈建至 Active Directory 的雲端安全性群組移至雲端同步。
對於將 Microsoft 365 群組佈建至 Active Directory 的客戶,可以繼續使用群組回寫 v1 來執行這項功能。
您可以利用使用者同步處理精靈,評估專門移至雲端同步的狀況。
下一步
您可以在 Microsoft Entra Cmdlet 中找到更多 Azure Active Directory PowerShell 文件。