本文討論可用來簡化動態成員資格群組規則的最常見方法。 較簡單且更有效率的規則會導致動態群組的處理時間更好。
當您撰寫動態成員資格群組的成員資格規則時,請遵循本文中的秘訣,以確保您盡可能有效率地建立這些規則。
將 -match 運算子的使用降到最低
盡量將 -match
運算元的使用降至最低。 請改為探索是否可以使用 -startswith
或 -eq
運算符。 請考慮使用其他屬性,讓您撰寫規則來選取群組的使用者,而不需使用 -match
運算符。
例如,如果您想要包含城市為 Lagos 之所有使用者的群組規則,請勿使用如下的規則:
user.city -match "ago"
user.city -match ".*?ago.*"
最好使用類似此範例的規則:
user.city -startswith "Lag"
或者,最棒的是:
user.city -eq "Lagos"
將 -contains 運算子的使用降到最低
和 -match
一樣,在規則中盡可能減少使用 -contains
運算符。 請改為探索是否可以使用 -startswith
或 -eq
運算符。 使用 -contains
可增加處理時間,特別是對於具有許多動態成員資格群組的使用者。
使用較少的 -or 運算符
識別規則在使用各種值的相同屬性時,透過運算符 -or
將它們連結在一起。 請改用 -in
運算子將它們分組為單一準則。 單一準則可讓規則更容易評估。
例如,請勿使用如下的規則:
(user.department -eq "Accounts" -and user.city -eq "Lagos") -or
(user.department -eq "Accounts" -and user.city -eq "Ibadan") -or
(user.department -eq "Accounts" -and user.city -eq "Kaduna") -or
(user.department -eq "Accounts" -and user.city -eq "Abuja") -or
(user.department -eq "Accounts" -and user.city -eq "Port Harcourt")
最好使用類似此範例的規則:
user.department -eq "Accounts" -and user.city -in ["Lagos", "Ibadan", "Kaduna", "Abuja", "Port Harcourt"]
相反地,識別具有不同於各種值的相同屬性的類似子準則,這些值是與-and
運算符相連。 然後使用 -notin
運算子將其分組成單一準則,讓規則更容易了解與評估。
例如,請勿使用如下的規則:
(user.city -ne "Lagos") -and (user.city -ne "Ibadan") -and (user.city -ne "Kaduna") -and (user.city -ne "Abuja") -and (user.city -ne "Port Harcourt")
最好使用類似此範例的規則:
user.city -notin ["Lagos", "Ibadan", "Kaduna", "Abuja", "Port Harcourt"]
避免冗餘的準則
請確定您未在規則中使用備援準則。 例如,請勿使用如下的規則:
user.city -eq "Lagos" or user.city -startswith "Lag"
最好使用類似此範例的規則:
user.city -startswith "Lag"