您可以建立以使用者或裝置屬性為基礎的規則,以啟用 Microsoft Entra ID 中動態成員群組的成員資格。 您可以使用成員屬性為基礎的成員資格規則,自動新增和移除動態成員資格群組。 在 Microsoft Entra,單一租用戶端最多可擁有 15,000 個動態成員資格群組。
本文將詳細說明根據使用者或裝置為組動態成員資格群組建立規則的屬性與語法。
注意
安全組可以包含裝置或使用者,但Microsoft 365個群組只能包含使用者。
動態成員群組相關考量
當使用者或裝置的屬性變更時,系統會評估目錄中動態成員資格群組的所有規則,以查看變更是否會觸發任何群組新增或移除。 如果使用者或裝置滿足群組上的規則,則會新增為該群組的成員。 如果不再滿足規則,則會被移除。 您無法手動新增或移除動態成員群組中的成員。
同時請記住這些限制:
- 您可以為裝置或使用者建立組動態成員資格群組,但無法建立同時包含使用者和裝置的規則。
- 您無法根據裝置擁有者的使用者屬性來建立裝置成員資格群組。 裝置成員資格規則只能參考裝置屬性。
授權需求
動態成員資格群組的功能需要每個屬於一個或多個動態成員資格群組的唯一使用者擁有 Microsoft Entra ID P1 授權或 Intune 教育版授權。 您不需要將授權指派給使用者,才能成為動態成員資格群組的成員。 但是,您必須在 Microsoft Entra 組織中擁有最少的授權數目,才能涵蓋所有這類使用者。
例如,如果您的組織中所有動態成員資格群組中總共有1,000個唯一使用者,則至少需要1,000個授權,Microsoft Entra ID P1才能符合授權需求。
若裝置屬於以裝置為基礎的動態成員群組,則不需授權。
Azure 入口網站中的規則建立器
Microsoft Entra ID 提供規則建立器,可讓您更快速建立和更新重要的規則。 規則建立器支援建構最多五個運算式。 您可以使用規則產生器來形成具有一些簡單表達式的規則,但您無法使用它來重現每個規則。 如果規則產生器不支援您想要建立的規則,您可以使用文字框。
如需逐步的步驟說明,請參閱 建立或更新動態成員資格群組。
重要
規則產生器僅適用於以用戶為基礎的動態成員資格群組。 您只能使用文字框來建立裝置型動態成員資格群組。
以下是一些需要使用文字輸入區域的進階規則或語法範例:
- 具有五個以上運算式的規則
- 直接報表的規則
- 使用
-contains或-notContains運算符的規則 - 設定運算子優先順序
-
具有複雜表達式的規則;例如
(user.proxyAddresses -any (_ -startsWith "contoso"))
注意
規則建立器可能無法顯示文字方塊中建構的某些規則。 當規則產生器無法顯示規則時,您可能會看到訊息。 規則建立器在任何方面都不會改變動態成員資格群組規則支援的語法、驗證或處理。
單一表達式的規則語法
單一表達式是成員資格規則的最簡單形式。 具有單一表達式的規則呈現為 <Property> <Operator> <Value>,其中屬性的語法是名稱 <object>.<property>。
以下範例說明正確建構的成員資格規則 (具有單一運算式):
user.department -eq "Sales"
單一運算式的括號是選擇性的。 成員資格規則主體的總長度不能超過 3,072 個字元。
建立成員資格規則的內容
用於自動將使用者或裝置加入群組的成員資格規則是一種會產生 true 或 false 結果的二進位運算式。 簡單規則的三個部分如下:
- 屬性
- 運算子
- 值
運算式內的部分順序很重要,可避免發生語法錯誤。
支援的屬性
您可以使用三種類型的屬性來建構成員資格規則:
- 布林值
- 日期/時間
- 字串
- 字串集合
您可以使用下列使用者屬性來建立單一表達式。
布爾值類型的屬性
| 屬性 | 允許的值 | 使用方式 |
|---|---|---|
accountEnabled |
true、false |
user.accountEnabled -eq true |
dirSyncEnabled |
true、false |
user.dirSyncEnabled -eq true |
日期/時間類型的屬性
| 屬性 | 允許的值 | 使用方式 |
|---|---|---|
employeeHireDate (預覽) |
任何 DateTimeOffset 值或關鍵詞 system.now |
user.employeeHireDate -eq "value" |
字串類型的屬性
| 屬性 | 允許的值 | 使用方式 |
|---|---|---|
city |
任何字串值或 null |
user.city -eq "value" |
country |
任何字串值或 null |
user.country -eq "value" |
companyName |
任何字串值或 null |
user.companyName -eq "value" |
department |
任何字串值或 null |
user.department -eq "value" |
displayName |
任何字串值 | user.displayName -eq "value" |
employeeId |
任何字串值 | user.employeeId -eq "value"user.employeeId -ne "null" |
facsimileTelephoneNumber |
任何字串值或 null |
user.facsimileTelephoneNumber -eq "value" |
givenName |
任何字串值或 null |
user.givenName -eq "value" |
jobTitle |
任何字串值或 null |
user.jobTitle -eq "value" |
mail |
任何字串值或 null (使用者的 SMTP 位址) |
user.mail -eq "value"user.mail -notEndsWith "@Contoso.com" |
mailNickName |
任何字串值 (使用者的郵件別名) | user.mailNickName -eq "value"user.mailNickname -endsWith "-vendor" |
memberOf |
任何字串值 (有效的群組物件識別碼) | user.memberOf -any (group.objectId -in ['value']) |
mobile |
任何字串值或 null |
user.mobile -eq "value" |
objectId |
使用者物件的 GUID | user.objectId -eq "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" |
onPremisesDistinguishedName |
任何字串值或 null |
user.onPremisesDistinguishedName -eq "value" |
onPremisesSecurityIdentifier |
內部部署安全性識別碼 (SID) 適用於從內部部署同步處理至雲端的使用者 | user.onPremisesSecurityIdentifier -eq "S-1-1-11-1111111111-1111111111-1111111111-1111111" |
passwordPolicies |
None、DisableStrongPassword、DisablePasswordExpiration、DisablePasswordExpiration、DisableStrongPassword |
user.passwordPolicies -eq "DisableStrongPassword" |
physicalDeliveryOfficeName |
任何字串值或 null |
user.physicalDeliveryOfficeName -eq "value" |
postalCode |
任何字串值或 null |
user.postalCode -eq "value" |
preferredLanguage |
ISO 639-1 程式代碼 | user.preferredLanguage -eq "en-US" |
sipProxyAddress |
任何字串值或 null |
user.sipProxyAddress -eq "value" |
state |
任何字串值或 null |
user.state -eq "value" |
streetAddress |
任何字串值或 null |
user.streetAddress -eq "value" |
surname |
任何字串值或 null |
user.surname -eq "value" |
telephoneNumber |
任何字串值或 null |
user.telephoneNumber -eq "value" |
usageLocation |
雙字母國家或地區代碼 | user.usageLocation -eq "US" |
userPrincipalName |
任何字串值 | user.userPrincipalName -eq "alias@domain" |
userType |
member、guest、null |
user.userType -eq "Member" |
字串集合類型的屬性
| 屬性 | 允許的值 | 範例 |
|---|---|---|
otherMails |
任何字串值 | user.otherMails -startsWith "alias@domain"user.otherMails -endsWith"@contoso.com" |
proxyAddresses |
SMTP: alias@domain、smtp: alias@domain |
user.proxyAddresses -startsWith "SMTP: alias@domain"user.proxyAddresses -notEndsWith "@outlook.com" |
如需裝置規則所使用的屬性,請參閱裝置的規則。
受到支持的運算子
下表列出單一運算式支援的所有運算子及其語法。 您可以將運算子與連字元作搭配使用,或不使用連字元作為前綴。 運算符 Contains 會執行部分字串比對,但不適合用於集合中的項目比對。
謹慎
為了獲得最佳結果,請盡可能減少 Match 或 Contains 的使用。 本文 建立更簡單、更有效率的動態成員資格群組規則 提供如何建立規則的指導,以改善動態群組的處理時間。 運算子 memberOf 處於預覽狀態,並有一些限制,因此請謹慎使用。
| 運算子 | 語法 |
|---|---|
Ends With |
-endsWith |
Not Ends With |
-notEndsWith |
Not Equals |
-ne |
Equals |
-eq |
Not Starts With |
-notStartsWith |
Starts With |
-startsWith |
Not Contains |
-notContains |
Contains |
-contains |
Not Match |
-notMatch |
Match |
-match |
In |
-in |
Not In |
-notIn |
使用 -in 和 -notIn 運算子
如果您想要比較使用者屬性的值與多個值,您可以使用 -in 或 -notIn 運算符。 使用方括弧符號 ([ 和 ]) 開始和結束值清單。
在下列範例中,如果的值true等於清單中的任何值,表達式會評估為 user.department :
user.department -in ["50001","50002","50003","50005","50006","50007","50008","50016","50020","50024","50038","50039","51100"]
使用 -le 和 -ge 運算子
當您在動態成員資格群組的規則中使用-le屬性時,可以使用小於運算符(-ge)或大於運算符(employeeHireDate)。
範例如下:
user.employeehiredate -ge system.now -plus p1d
user.employeehiredate -le 2020-06-10T18:13:20Z
使用 -match 運算子
您可以使用 -match 運算符來比對任何正則表示式。
在下列範例中,Da、Dav和David 評估為 true。
aDa 評估為 false。
user.displayName -match "^Da.*"
針對下列範例, David 評估為 true。
Da 評估為 false。
user.displayName -match ".*vid"
支援值
您在表示式中使用的值可以包含數種類型:
- 字串
- 布林值 (
true,false) - 數字
- 陣列(數字陣列、字串數組)
當您在表達式內指定值時,請務必使用正確的語法來避免錯誤。 以下是一些語法秘訣:
- 除非值為字串,否則雙引號是選擇性的。
- Regex 和字串作業不區分大小寫。
- 請確定屬性名稱的格式正確如所示,因為它們區分大小寫。
- 當字串值包含雙引號時,您應該使用反斜杠 (
\) 字元來逸出這兩個引號。 例如,當 是值時,Sales是適當的語法。 使用兩個單引號來逸出單引號,而不是每次使用一個。 - 您也可以使用
null做為值來執行 Null 檢查, 例如user.department -eq null。
使用 null 值
若要在規則中指定 null 值:
- 當您比較
-eq表示式中的值時,請使用-ne或null。 - 只有在您想要將
null這個字組解釋為字串常值時,才使用引號括住它。 - 請勿使用
-not運算子做為 Null 值的比較運算符。 如果您使用它,不論您使用null或$null,您都會收到錯誤。
參考 null 值的正確方式如下:
user.mail –ne null
具有多個運算式的規則
動態成員資格群組的規則可以由多個單一表達式組成,這些表達式是通過 -and、-or 和 -not 邏輯運算子連接的。 您也可以組合使用邏輯運算子。
以下範例是正確建構的成員資格規則 (具有多個運算式):
(user.department -eq "Sales") -or (user.department -eq "Marketing")
(user.department -eq "Sales") -and -not (user.jobTitle -startsWith "SDE")
運算子優先順序
下列列表顯示優先順序從最高到最低的所有運算子。 相同行上的運算符優先順序相等。
-eq -ne -startsWith -notStartsWith -contains -notContains -match –notMatch -in -notIn
-not
-and
-or
-any -all
以下範例說明運算子優先順序,其中有兩個運算式被評估給使用者:
user.department –eq "Marketing" –and user.country –eq "US"
只有在優先順序不符合您的需求時,才需要括弧。 例如,如果您想要先評估部門,下列程式代碼會示範如何使用括號來判斷順序:
user.country –eq "US" –and (user.department –eq "Marketing" –or user.department –eq "Sales")
具有複雜運算式的規則
成員資格規則可以包含複雜的運算式,其中屬性、運算子和值可以呈現更複雜的形式。 當下列任一點成立時,表達式會被視為複雜:
- 屬性是由值的集合所組成;具體而言,多重值屬性。
- 表達式會使用
-any和-all運算符。 - 表達式的值本身可以是一或多個表達式。
多重值屬性
多重值屬性是相同類型之物件的集合。 您可以使用 它們來建立成員資格規則,方法是使用 -any 和 -all 邏輯運算符。
| 屬性 | 價值觀 | 使用方式 |
|---|---|---|
assignedPlans |
集合中的每個物件都會公開下列字串屬性:、 capabilityStatusserviceservicePlanId |
user.assignedPlans -any (assignedPlan.servicePlanId -eq "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e" -and assignedPlan.capabilityStatus -eq "Enabled") |
proxyAddresses |
SMTP: alias@domain、smtp: alias@domain |
(user.proxyAddresses -any (\_ -startsWith "contoso")) |
使用 -any 和 -all 運算子
您可以使用下列運算子,將條件套用至集合中的一或所有專案:
-
-any:當集合中至少有一個項目符合條件時滿足。 -
-all:當集合中的所有項目都符合條件時感到滿意。
範例 1
assignedPlans 是多值屬性,會列出指派給使用者的所有服務方案。 下列表達式會選取具有 Exchange Online (計劃 2) 服務方案的使用者(以 GUID 值表示),且該服務方案處於 Enabled 狀態:
user.assignedPlans -any (assignedPlan.servicePlanId -eq "efb87545-963c-4e0d-99df-69c6916d9eb0" -and assignedPlan.capabilityStatus -eq "Enabled")
您可以使用這樣的規則,將已啟用 Microsoft 365 或其他 Microsoft Online Services 功能的所有使用者分組。 然後,您可以使用一組原則將規則套用至群組。
範例 2
下列表達式會選取所有使用 Intune 服務相關聯方案的使用者(由服務名稱 SCO識別):
user.assignedPlans -any (assignedPlan.service -eq "SCO" -and assignedPlan.capabilityStatus -eq "Enabled")
範例 3
下列運算式會選取未指派服務方案的所有使用者:
user.assignedPlans -all (assignedPlan.servicePlanId -eq null)
請使用底線 (_) 語法
底線(_)語法會比對多值字串集合屬性中的某個特定值,將使用者或裝置新增到動態成員群組。 您可以將其與 -any 或 -all 運算子一起使用。
以下是使用底線符號在規則中根據 user.proxyAddress 新增成員的範例。 (user.otherMails作用相同。)此規則會將具有 Proxy 位址開頭為 contoso 的任何使用者新增到群組。
(user.proxyAddresses -any (_ -startsWith "contoso"))
其他屬性和通用規則
建立直接報表的規則
您可以建立包含經理所有直接報告的群組。 當經理的直屬員工在未來變更時,系統便會自動調整群組的成員資格。
注意
管理員也會加入直屬下屬的動態群組。
您可以使用下列語法來建構直接報告規則:
Direct Reports for "{objectID_of_manager}"
以下是有效規則的範例,其中 aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb 是管理員的物件標識碼:
Direct Reports for "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
下列秘訣可協助您正確使用規則:
- 管理員標識碼是管理員的物件標識碼。 您可以在經理的個人檔案中找到它。
- 若要讓規則能夠運作,請確定
Manager已為組織中的使用者正確設定 屬性。 您可以檢查使用者設定檔中的目前值。 - 此規則僅支援經理的直屬員工。 您無法建立具有經理直接報告 及其 報表的群組。
- 您無法將此規則與任何其他成員資格規則結合。
為所有使用者建立規則
您可以使用成員資格規則,建立包含組織內所有使用者的群組。 未來在組織中新增或移除使用者時,將會自動調整群組的成員資格。
您可以使用包含 -ne 運算子和 null 值的單一表示式來建構所有用戶的規則。 此規則會將企業對企業來賓用戶和成員使用者新增至群組。
user.objectId -ne null
如果想要讓群組排除來賓使用者,而只包含組織的成員,您可以使用下列語法:
(user.objectId -ne null) -and (user.userType -eq "Member")
為所有裝置建立規則
您可以使用成員資格規則,建立包含組織內所有裝置的群組。 未來在組織中新增或移除裝置時,將會自動調整群組的成員資格。
您可以使用包含 -ne 運算子和 null 值的單一表示式來建構所有裝置的規則:
device.objectId -ne null
擴充屬性和自定義延伸模組屬性
在動態成員資格群組的規則中,支援以字串屬性形式存在的擴充屬性和自訂擴充屬性。
您可以從內部部署 Windows Server Active Directory 同步處理擴充屬性 。 或者,您可以使用 Microsoft Graph 來更新擴充屬性。
擴充屬性採用 的格式ExtensionAttribute<X>,其中 <X> 等於1-15 。 動態成員資格群組的規則不支援多值擴充屬性。
以下是使用延伸模組屬性作為屬性的規則範例:
(user.extensionAttribute15 -eq "Marketing")
您可以從內部部署 Windows Server Active Directory 或連線的軟體即服務(SaaS)應用程式同步處理自訂擴充屬性。 您可以使用 Microsoft Graph 來建立自訂延伸模組屬性。
自訂延伸模組屬性採用格式為 user.extension_[GUID]_[Attribute],其中:
-
[GUID]是在 Microsoft Entra ID 中的應用程式建立屬性所使用的唯一標識碼的精簡版本。 它只包含字元 0-9 和 A-Z。 -
[Attribute]是屬性被創建時的名稱。
以下是使用自訂擴充屬性的規則範例:
user.extension_c272a57b722d4eb29bfe327874ae79cb_OfficeNumber -eq "123"
自訂延伸模組屬性也稱為目錄或 Microsoft Entra 延伸模組屬性。
您可以在 Graph Explorer 中查詢使用者的屬性,並在目錄中搜尋屬性名稱,以找到自定義屬性名稱。 此外,您現在可以在動態規則產生器中選取 [取得自定義延伸模組屬性 ] 連結,以輸入唯一的應用程式識別碼,並接收建立動態成員資格群組規則時要使用的自定義延伸模塊屬性完整清單。 您可以重新整理此清單,以取得該應用程式的任何新自定義延伸模組屬性。 延伸模組屬性與自訂延伸模組屬性必須來自租用戶的應用程式。
如需詳細資訊,請參閱 在動態成員資格群組中使用屬性。
裝置的規則
您可以建立規則,以選取群組中成員資格的裝置物件。 您不能同時讓使用者和裝置成為群組成員。
注意
屬性 organizationalUnit 已不再列出,您不應該使用它。 Intune 會在特定情況下設定此字串,但Microsoft Entra ID 無法辨識它。 根據這個屬性,不會將任何裝置新增至群組。
屬性 systemlabels 是唯讀的。 您無法使用 Intune 進行設定。
針對 Windows 10,屬性的正確格式 deviceOSVersion 為 device.deviceOSVersion -startsWith "10.0.1"。 您可以使用 PowerShell Cmdlet 來驗證格式 Get-MgDevice :
Get-MgDevice -Search "displayName:YourMachineNameHere" -ConsistencyLevel eventual | Select-Object -ExpandProperty 'OperatingSystemVersion'
您可以使用下列裝置屬性。
| 裝置屬性 | 價值觀 | 範例 |
|---|---|---|
accountEnabled |
true、false |
device.accountEnabled -eq true |
deviceCategory |
有效的裝置類別名稱 | device.deviceCategory -eq "BYOD" |
deviceId |
有效的Microsoft Entra 裝置標識碼 | device.deviceId -eq "d4fe7726-5966-431c-b3b8-cddc8fdb717d" |
deviceManagementAppId |
Microsoft Entra ID 中行動裝置管理的有效應用程式標識碼 |
device.deviceManagementAppId -eq "0000000a-0000-0000-c000-000000000000" 適用於 Microsoft Intune 受管理的裝置"54b943f8-d761-4f8d-951e-9cea1846db5a" 適用於 System Center Configuration Manager 共同管理的裝置 |
deviceManufacturer |
任何字串值 | device.deviceManufacturer -eq "Samsung" |
deviceModel |
任何字串值 | device.deviceModel -eq "iPad Air" |
displayName |
任何字串值 | device.displayName -eq "Rob iPhone" |
deviceOSType |
任何字串值 | (device.deviceOSType -eq "iPad") -or (device.deviceOSType -eq "iPhone")device.deviceOSType -startsWith "AndroidEnterprise"device.deviceOSType -eq "AndroidForWork"device.deviceOSType -eq "Windows" |
deviceOSVersion |
任何字串值 | device.deviceOSVersion -eq "9.1"device.deviceOSVersion -startsWith "10.0.1" |
deviceOwnership
1 |
Personal、Company、Unknown |
device.deviceOwnership -eq "Company" |
devicePhysicalIds |
Windows Autopilot 使用的任何字串值,例如所有 Windows Autopilot 裝置、 OrderID或 PurchaseOrderID |
device.devicePhysicalIDs -any _ -startsWith "[ZTDId]"device.devicePhysicalIds -any _ -eq "[OrderID]:179887111881"device.devicePhysicalIds -any _ -eq "[PurchaseOrderId]:76222342342" |
deviceTrustType
2 |
AzureAD、ServerAD、Workplace |
device.deviceTrustType -eq "AzureAD" |
enrollmentProfileName |
Apple 自動化裝置註冊、Android Enterprise 公司擁有的專用裝置註冊或 Windows Autopilot 的配置檔名稱 | device.enrollmentProfileName -eq "DEP iPhones" |
extensionAttribute1
3 |
任何字串值 | device.extensionAttribute1 -eq "some string value" |
extensionAttribute2 |
任何字串值 | device.extensionAttribute2 -eq "some string value" |
extensionAttribute3 |
任何字串值 | device.extensionAttribute3 -eq "some string value" |
extensionAttribute4 |
任何字串值 | device.extensionAttribute4 -eq "some string value" |
extensionAttribute5 |
任何字串值 | device.extensionAttribute5 -eq "some string value" |
extensionAttribute6 |
任何字串值 | device.extensionAttribute6 -eq "some string value" |
extensionAttribute7 |
任何字串值 | device.extensionAttribute7 -eq "some string value" |
extensionAttribute8 |
任何字串值 | device.extensionAttribute8 -eq "some string value" |
extensionAttribute9 |
任何字串值 | device.extensionAttribute9 -eq "some string value" |
extensionAttribute10 |
任何字串值 | device.extensionAttribute10 -eq "some string value" |
extensionAttribute11 |
任何字串值 | device.extensionAttribute11 -eq "some string value" |
extensionAttribute12 |
任何字串值 | device.extensionAttribute12 -eq "some string value" |
extensionAttribute13 |
任何字串值 | device.extensionAttribute13 -eq "some string value" |
extensionAttribute14 |
任何字串值 | device.extensionAttribute14 -eq "some string value" |
extensionAttribute15 |
任何字串值 | device.extensionAttribute15 -eq "some string value" |
isRooted |
true、false |
device.isRooted -eq true |
managementType |
行動裝置管理(適用於行動裝置) | device.managementType -eq "MDM" |
memberOf |
任何字串值 (有效的群組物件識別碼) | device.memberOf -any (group.objectId -in ['value']) |
objectId |
有效的Microsoft Entra 對象標識碼 | device.objectId -eq "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" |
profileType |
Microsoft Entra ID 中的有效配置檔類型 | device.profileType -eq "RegisteredDevice" |
systemLabels
4 |
與 Intune 裝置屬性相符的唯讀字串,用於標記現代工作場所裝置 | device.systemLabels -startsWith "M365Managed" SystemLabels |
1 當您使用 deviceOwnership 來建立裝置的動態成員資格群組時,您必須將 值設定為 等於 Company。 在 Intune 上,裝置擁有權會改為表示為 Corporate。 如需詳細資訊,請參閱ownerTypes。
2 當您使用 deviceTrustType 來建立裝置的動態成員資格群組時,您必須將值設定為等於 AzureAD 代表已加入Microsoft Entra 的裝置、代表Microsoft Entra 混合式加入裝置, ServerAD 或 Workplace 代表Microsoft Entra 已註冊的裝置。
3 當您使用 extensionAttribute1-15 來建立動態成員資格群組時,您需要在裝置上設定 extensionAttribute1-15 的值。
深入瞭解如何在 Microsoft Entra 裝置物件上撰寫extensionAttributes。
4 當您使用 systemLabels時,在各種內容中使用的只讀屬性(例如裝置管理和敏感度標籤)無法透過 Intune 編輯。