請參閱在 Microsoft Entra ID 中撰寫屬性對應運算式的參考
當您設定佈建到 SaaS 應用程式時,您可以指定的其中一種屬性對應類型是運算式對應。 針對這些對應,您必須撰寫類似指令碼的運算式,以便將使用者的資料轉換為 SaaS 應用程式更能接受的格式。
語法概觀
屬性對應的運算式語法是 Visual Basic for Applications (VBA) 函式。
整個運算式必須以函數定義,由函數名稱後面接著以括號括住的引數組成:FunctionName(
<<argument 1>>
,<<argument N>>
)您可以在函數內互相巢狀函數。 例如:FunctionOne(FunctionTwo(
<<argument1>>
))您可以將三種不同類型的引數傳入函式:
- 屬性,必須以方括弧括住。 例如:[attributeName]
- 字串常數,必須以雙引號括住。 例如:"United States"
- 其他函式。 例如:FunctionOne(
<<argument1>>
、FunctionTwo(<<argument2>>
))
對於字串常數,如果您在字串中需要反斜線 ( \ ) 或引號 ( " ) ,則必須使用反斜線 ( \ ) 符號逸出。 例如:"公司名稱:\"Contoso\""
語法區分大小寫,當您在函數中將其輸入為字串 (或從此處直接進行複製貼上) 時,必須考慮大小寫。
函式的清單
AppendAppRoleAssignmentsComplexBitAndCBoolCDateCoalesceConvertToBase64ConvertToUTF8HexCountCStrDateAddDateDiffDateFromNumFormatDateTimeGuidIgnoreFlowIfNullOrEmptyIIFInStrIsNullIsNullOrEmptyIsPresentIsStringItemJoinLeftMidNormalizeDiacriticsNotNowNumFromDatePCaseRandomStringRedactRemoveDuplicatesReplaceSelectUniqueValueSingleAppRoleAssignmentSplitStripSpacesSwitchToLowerToUpperWord
附加
函式:Append(source, suffix)
描述:取出 source 字串值並在結尾附加尾碼。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常為 source 物件的屬性名稱。 |
尾碼 | 必要 | String | 您想要附加至 source 值結尾的字串。 |
附加常數尾碼到使用者名稱
例如:如果您使用 Salesforce 沙箱,您可能需要在所有的使用者名稱中附加其他的尾碼,才能進行同步處理。
Expression:Append([userPrincipalName], ".test")
範例輸入/輸出:
- 輸入:(userPrincipalName):"John.Doe@contoso.com"
- 輸出:"John.Doe@contoso.com.test"
AppRoleAssignmentsComplex
函式:AppRoleAssignmentsComplex([appRoleAssignments])
描述:用來為使用者設定多個角色。 如需詳細使用方法,請參閱教學課程 - 在 Microsoft Entra ID 中自訂 SaaS 應用程式的使用者佈建屬性對應。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
[appRoleAssignments] | 必要 | String | [appRoleAssignments] 物件。 |
BitAnd
函式:BitAnd(value1, value2)
描述:此函數會將這兩個參數轉換為二進位表示法,並將某一個位元設為:
- 0 - 如果 value1 和 value2 中有一或兩個對應位元為 0
- 1 - 如果這兩個對應位元都是 1。
換句話說,除非這兩個參數的對應位元都是 1,否則在所有情況下都會傳回 0。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
value1 | 必要 | 數量 | 應使用 AND 加上 value2 的數值 |
value2 | 必要 | 數量 | 應使用 AND 加上 value1 的數值 |
範例:BitAnd(&HF, &HF7)
11110111 AND 00000111 = 00000111 因此 BitAnd
會傳回 7,二進位值為00000111。
CBool
函式:CBool(Expression)
描述:CBool
函數會根據評估的運算式傳回布林值。 如果運算式評估為非零值,則 CBool
會傳回 True,否則會傳回 False。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
運算式 | 必要 | expression | 任何有效的運算式 |
範例:CBool([attribute1] = [attribute2])
如果這兩個屬性的值相同,即會傳回 True。
CDate
函式:
CDate(expression)
描述:
CDate 函式會傳回字串的 UTC DateTime。 DateTime 不是原生屬性類型,但可以在 FormatDateTime 和 DateAdd 等日期函數內使用。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
運算式 | 必要 | 運算式 | 表示日期/時間的任何有效字串。 如需支援的格式,請參閱 .NET 自訂日期和時間格式字串。 |
備註:
傳回的字串一律為 UTC,並遵循格式 M/d/yyyy h:mm:ss tt。
範例 1:
CDate([StatusHireDate])
範例輸入/輸出:
- 輸入 (StatusHireDate):"2020-03-16-07:00"
- 輸出:"3/16/2020 7:00:00 AM" <-- 請注意,函數會傳回與上述 DateTime 對等的 UTC
範例 2:
CDate("2021-06-30+08:00")
範例輸入/輸出:
- 輸入:"2021-06-30+08:00"
- 輸出:"6/29/2021 4:00:00 PM" <-- 請注意,函數會傳回與上述 DateTime 對等的 UTC
範例 3:
CDate("2009-06-15T01:45:30-07:00")
範例輸入/輸出:
- 輸入:"2009-06-15T01:45:30-07:00"
- 輸出:"6/15/2009 8:45:30 AM" <-- 請注意,函數會傳回與上述 DateTime 對等的 UTC
Coalesce
函式:Coalesce(source1, source2, ..., defaultValue)
描述:傳回非 Null 的第一個來源值。 如果所有引數都是 Null,且 defaultValue 存在,會傳回 defaultValue。 如果所有引數都是 Null,且 defaultValue 不存在,則 Coalesce 會傳回 NULL。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source1 sourceN | 必要 | String | 必要,變動次數。 通常為 source 物件的屬性名稱。 |
defaultValue | 選擇性 | String | 當所有來源值都是 Null 時,所要使用的預設值。 可以是空字串 ("")。 |
傳送 mail 值 (如果不是 Null),否則為 Flow userPrincipalName
範例:您想要傳送 mail 屬性 (如果有的話)。 如果不是,則您想要改為傳送 userPrincipalName 的值。
Expression:Coalesce([mail],[userPrincipalName])
範例輸入/輸出:
- 輸入 (mail):NULL
- 輸入 (userPrincipalName):"John.Doe@contoso.com"
- 輸出:"John.Doe@contoso.com"
ConvertToBase64
函式:ConvertToBase64(source)
描述:ConvertToBase64 函數會將字串轉換為 Unicode base64 字串。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 要轉換成 base64 的字串 |
範例:ConvertToBase64("Hello world!")
傳回 "SABlAGwAbABvACAAdwBvAHIAbABkACEA"
ConvertToUTF8Hex
函式:ConvertToUTF8Hex(source)
描述:ConvertToUTF8Hex 函數會將字串轉換為 UTF8 十六進位編碼值。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 要轉換成 UTF8 十六進位的字串 |
範例:ConvertToUTF8Hex("Hello world!")
傳回 48656C6C6F20776F726C6421
計數
函式:Count(attribute)
描述:Count 函數會傳回多重值屬性中的元素個數。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
attribute | 必要 | 屬性 | 會計算元素的多重值屬性 |
CStr
函式:CStr(value)
描述:CStr 函數會將值轉換成字串資料類型。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
value | 必要 | 數值、參考或布林值 | 可以是數值、參考屬性或布林值。 |
範例:CStr([dn])
傳回 "cn=Joe,dc=contoso,dc=com"
DateAdd
函式:
DateAdd(interval, value, dateTime)
描述:
傳回代表新增指定時間間隔的日期的日期/時間。 傳回的日期格式為:M/d/yyyy h:mm:ss tt。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
interval | 必要 | String | 您要加入的時間間隔。 請參閱此表格接受的值。 |
value | 必要 | 數字 | 您想要加入的單位數。 它可以是正數 (用以取得未來的日期) 或負數 (用以取得過去的日期)。 |
dateTime | 必要 | Datetime | DateTime 代表要加入間隔的日期。 |
傳遞日期字串作為輸入時,請使用 CDate 函數來包裝 datetime 字串。 若要取得 UTC 格式的系統時間,請使用 Now 函數。
interval 字串必須具有下列其中一個值:
- yyyy 年
- m 月
- d 日
- ww 周
- h 小時
- n 分鐘
- s 秒
範例1:根據 Workday 的傳入 StatusHireDate 產生日期值
DateAdd("d", 7, CDate([StatusHireDate]))
範例 | interval | value | dateTime (變數 StatusHireDate 的值) | output |
---|---|---|---|---|
新增 7 天至雇用日期 | "d" | 7 | 2012-03-16-07:00 | 3/23/2012 7:00:00 AM |
取得雇用日期前 10 天的日期 | "d" | -10 | 2012-03-16-07:00 | 3/6/2012 7:00:00 AM |
新增兩週至雇用日期 | "ww" | 2 | 2012-03-16-07:00 | 3/30/2012 7:00:00 AM |
新增十個月至雇用日期 | "m" | 10 | 2012-03-16-07:00 | 1/16/2013 7:00:00 AM |
新增兩年至雇用日期 | "yyyy" | 2 | 2012-03-16-07:00 | 3/16/2014 7:00:00 AM |
DateDiff
函式:
DateDiff(interval, date1, date2)
描述:
此函數會使用 interval 參數傳回表示兩個輸入日期之間差異的數字。 它會傳回
- 如果 date2 > date1,則為正數。
- 如果 date2 < date1,則為負數。
- 如果 date2 == date1,則為 0
參數:
名稱 | 必要/選用 | 類型 | 備註 |
---|---|---|---|
interval | 必要 | String | 用來計算差異的時間間隔。 |
date1 | 必要 | Datetime | DateTime 表示有效日期。 |
date2 | 必要 | Datetime | DateTime 表示有效日期。 |
傳遞日期字串作為輸入時,請使用 CDate 函數來包裝 datetime 字串。 若要取得 UTC 格式的系統時間,請使用 Now 函數。
interval 字串必須具有下列其中一個值:
- yyyy 年
- m 月
- d 日
- ww 周
- h 小時
- n 分鐘
- s 秒
範例1:以不同間隔比較目前日期與 Workday 的雇用日期
DateDiff("d", Now(), CDate([StatusHireDate]))
範例 | interval | date1 | date2 | output |
---|---|---|---|---|
兩個日期之間的正差異 (以天為單位) | d | 2021-08-18+08:00 | 2021-08-31+08:00 | 13 |
兩個日期之間的負差異 (以天為單位) | d | 8/25/2021 5:41:18 PM | 2012-03-16-07:00 | -3449 |
兩個日期之間的差異 (以週為單位) | ww | 8/25/2021 5:41:18 PM | 2012-03-16-07:00 | -493 |
兩個日期之間的差異 (以月為單位) | m | 8/25/2021 5:41:18 PM | 2012-03-16-07:00 | -113 |
兩個日期之間的差異 (以年為單位) | yyyy | 8/25/2021 5:41:18 PM | 2012-03-16-07:00 | -9 |
兩個日期相同時的差異 | d | 2021-08-31+08:00 | 2021-08-31+08:00 | 0 |
兩個日期之間的差異 (以小時為單位) | 小時 | 2021-08-24 | 2021-08-25 | 24 |
兩個日期之間的差異 (以分鐘為單位) | n | 2021-08-24 | 2021-08-25 | 1440 |
兩個日期之間的差異 (以秒為單位) | s | 2021-08-24 | 2021-08-25 | 86400 |
範例2:結合 DateDiff 與 IIF 函數來設定屬性值
如果帳戶在 Workday 內為作用中,則僅在雇用日期是在接下來的五天內時,才會將使用者的 accountEnabled 屬性設為 True。
Switch([Active], ,
"1", IIF(DateDiff("d", Now(), CDate([StatusHireDate])) > 5, "False", "True"),
"0", "False")
DateFromNum
函式:DateFromNum(value)
描述:DateFromNum 函數會將 AD 的日期格式的值轉換為 DateTime 類型。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
value | 必要 | Date | 要轉換為 DateTime 類型的 AD 日期 |
範例:DateFromNum([lastLogonTimestamp])
DateFromNum(129699324000000000)
傳回代表 2012 年 1 月 1 日下午 11:00 的 DateTime。
FormatDateTime
函式:FormatDateTime(source, dateTimeStyles, inputFormat, outputFormat)
描述:從一種格式取出日期字串,並將其轉換成不同的格式。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常為 source 物件的屬性名稱。 |
dateTimeStyles | 選擇性 | String | 使用此參數來指定格式化選項,這些選項會自訂一些日期和時間剖析方法的字串剖析。 如需支援的值,請參閱 DateTimeStyles 文件。如果保留空白,則使用的預設值為 DateTimeStyles.RoundtripKind, DateTimeStyles.AllowLeadingWhite, DateTimeStyles.AllowTrailingWhite |
inputFormat | 必要 | String | source 值的預期格式。 如需支援的格式,請參閱 .NET 自訂日期和時間格式字串。 |
outputFormat | 必要 | String | 輸出日期的格式。 |
以特定格式將日期輸出為字串
範例:您想要以特定格式將日期傳送至 SaaS 應用程式,例如 ServiceNow。 您可以考慮使用下列運算式。
Expression:
FormatDateTime([extensionAttribute1], , "yyyyMMddHHmmss.fZ", "yyyy-MM-dd")
範例輸入/輸出:
- 輸入 (extensionAttribute1):"20150123105347.1Z"
- 輸出:"2015-01-23"
Guid
函式:Guid()
描述:函數 GUID 會產生新的隨機 GUID
範例:
Guid()
樣本輸出:"00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
IgnoreFlowIfNullOrEmpty
函式:IgnoreFlowIfNullOrEmpty(expression)
描述:如果括號內的函數或屬性為 Null 或空白,則 IgnoreFlowIfNullOrEmpty 函數會指示佈建服務忽略屬性,並將其從流程中卸除。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
運算式 | 必要 | 運算式 | 要評估的運算式 |
範例 1:如果屬性為 Null,則不傳送屬性
IgnoreFlowIfNullOrEmpty([department])
上述運算式會從佈建流程中卸除 department 屬性 (如果屬性為 Null 或空白)。
範例2:如果運算式對應評估為空字串或 Null,則不傳送屬性
假設 SuccessFactors 屬性 prefix 對應至使用下列運算式對應的內部部署 Active Directory 屬性 personalTitle:
IgnoreFlowIfNullOrEmpty(Switch([prefix], "", "3443", "Dr.", "3444", "Prof.", "3445", "Prof. Dr."))
上述運算式會先評估 Switch 函數。 如果前置詞屬性沒有 Switch 函式中所列的任何值,則 ** 會傳回空字串,而且布建流程中未包含屬性 personalTitle 以 內部部署的 Active Directory。
IIF
函式:IIF(condition,valueIfTrue,valueIfFalse)
描述:IIF 函數會根據指定的條件傳回其中一組可能的值。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
condition | 必要 | 變數或運算式 | 可評估為 true 或 false 的任何值或運算式。 |
valueIfTrue | 必要 | 變數或字串 | 條件評估為 True 時所傳回的值。 |
valueIfFalse | 必要 | 變數或字串 | 條件評估為 False 時所傳回的值。 |
下列是可在 condition 中使用的比較運算子:
- 等於 (=) 以及不等於 (<>)
- 大於 (>) 以及大於等於 (>=)
- 小於 (<) 以及小於等於 (<=)
範例:如果 country = "USA",請將目標屬性值設為來源 country 屬性,否則請將目標屬性值設為來源 department 屬性。
IIF([country]="USA",[country],[department])
已知的限制
本章節包含 IIF 函數的限制和因應措施。 如需針對使用者建立問題進行疑難解答的資訊,請參閱建立失敗,因為 Null /空白值。
- IIF 函數目前不支援 AND 和 OR 邏輯運算子。
- 若要實作 AND 邏輯,請使用沿著 trueValue 路徑鏈結的巢狀 IIF 陳述式。
範例:如果 country = "USA" 且 state = "CA",則會傳回值 "True",否則傳回 "False"。
IIF([country]="USA",IIF([state]="CA","True","False"),"False")
- 若要實作 OR 邏輯,請使用沿著 falseValue 路徑鏈結的巢狀 IIF 陳述式。
範例:如果 country = "USA" 或 state = "CA",則會傳回值 "True",否則傳回 "False"。
IIF([country]="USA","True",IIF([state]="CA","True","False"))
- 如果 IIF 函數內使用的來源屬性是空的或 Null,條件檢查就會失敗。
- 不支援的 IIF 運算式範例:
IIF([country]="","Other",[country])
IIF(IsNullOrEmpty([country]),"Other",[country])
IIF(IsPresent([country]),[country],"Other")
- 建議的因應措施:使用 Switch 函數來檢查空的/Null 值。 範例:如果 country 屬性是空的,請將值設為 "Other"。 如果存在,請將 country 屬性值傳遞至目標屬性。
Switch([country],[country],"","Other")
- 不支援的 IIF 運算式範例:
InStr
函式:InStr(value1, value2, start, compareType)
描述:InStr 函數會在字串中尋找第一個出現的 substring。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
value1 | 必要 | String | 要搜尋的字串 |
value2 | 必要 | String | 找到的字串 |
start | 選擇性 | 整數 | 尋找 substring 的開始位置 |
compareType | 選擇性 | 列舉 | 可以是 vbTextCompare 或 vbBinaryCompare |
範例:InStr("The quick brown fox","quick")
評估為 5。
InStr("repEated","e",3,vbBinaryCompare)
評估為 7
IsNull
函式:IsNull(Expression)
描述:如果運算式評估為 Null,則 IsNull 函數會傳回 true。 針對屬性,Null 表示該屬性不存在。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
運算式 | 必要 | 運算式 | 要評估的運算式 |
範例:IsNull([displayName])
如果屬性不存在,則會傳回 True。
IsNullorEmpty
函式:IsNullOrEmpty(Expression)
描述:如果運算式為 Null 或空字串,則 IsNullOrEmpty 函數會傳回 True。 如果屬性不存在,或存在但為空字串,此會評估為 True。 此函式的相反函式名稱為 IsPresent。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
運算式 | 必要 | 運算式 | 要評估的運算式 |
範例:IsNullOrEmpty([displayName])
如果屬性不存在或為空字串,則會傳回 True。
IsPresent
函式:IsPresent(Expression)
描述:如果運算式評估某字串為非 Null 且不是空字串,則 IsPresent 函數會傳回 True。 這個函式的相反函式名稱為 IsNullOrEmpty。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
運算式 | 必要 | 運算式 | 要評估的運算式 |
範例:Switch(IsPresent([directManager]),[directManager], IsPresent([skiplevelManager]),[skiplevelManager], IsPresent([director]),[director])
IsString
函式:IsString(Expression)
描述:如果運算式可評估為字串類型,則 IsString 函數會評估為 True。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
運算式 | 必要 | 運算式 | 要評估的運算式 |
項目
函式:Item(attribute, index)
描述:Item 函數會從多重值字串/屬性傳回一個項目。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
attribute | 必要 | 屬性 | 要搜尋的多重值屬性。 |
index | 必要 | 整數 | 多重值字串中某個項目的索引。 |
範例:Item([proxyAddresses], 1)
會傳回多重值屬性中的第一個項目。 不應使用索引 0。
聯結
函式:Join(separator, source1, source2, …)
描述:Join() 類似於 Append(),不過前者可以將多個 source 字串值合併成單一字串,且每個值會以 separator 字串分隔。
如果其中一個 source 值是多重值屬性,則該屬性中的每個值會聯結在一起,並以分隔符號值分隔。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
separator | 必要 | String | 用來分隔串連成一個字串的 source 值的字串。 如果不需要分隔符號,可以是 ""。 |
source1 sourceN | 必要,變動次數 | String | 要聯結在一起的字串值。 |
Left
函式:Left(String, NumChars)
描述:Left 函數會從字串左側傳回指定的字元數。 如果 numChars = 0,會傳回空字串。 如果 numChars < 0,會傳回輸入字串。 如果 string 為 Null,會傳回空字串。 如果 string 包含的字元數比 numChars 中指定的數目少,即會傳回與 string 完全相同的字串 (也就是,包含參數 1 中的所有字元)。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
String | 必要 | 屬性 | 要從中傳回字元的字串 |
NumChars | 必要 | 整數 | 用來識別要從字串開頭 (左側) 傳回字元數的數字 |
範例:Left("John Doe", 3)
傳回 "Joh"。
Mid
函式:Mid(source, start, length)
描述:傳回 source 值的 substring。 子字串是只包含 source 字串某些字元的字串。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常為屬性的名稱。 |
start | 必要 | 整數 | 子字串在 source 字串中起始位置的索引。 字串第一個字元的索引為 1,第二個字元的索引為 2,依此類推。 |
length | 必要 | 整數 | 子字串的長度。 如果長度超出 source 字串結尾,則函數會傳回從 start 索引一直到 source 字串結尾的 substring。 |
NormalizeDiacritics
函式:NormalizeDiacritics(source)
描述:需要一個字串引數。 傳回字串,但是當中所有的變音符號字元皆被同等的非變音符號字元取代。 通常用於將包含變音符號字元 (重音符號) 的名字和姓氏,轉換成可用於如使用者主體名稱、SAM 帳戶名稱,與電子郵件地址等各種使用者識別碼中的有效值。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常是名字或姓氏屬性。 |
包含變音符號的字元 | 標準化字元 | 包含變音符號的字元 | 標準化字元 |
---|---|---|---|
ä、à、a、°、å、×、ą、ă、ā、ā́、ā̀、ā̂、ā̃、ǟ、ā̈、ǡ、a̱、å̄ | a | Ä、À、A、°、Å、×、Ą、Ă、Ā、Ā́、Ā̀、Ā̂、Ā̃、Ǟ、Ā̈、Ǡ、A̱、Å̄ | A |
æ、ǣ | ae | Æ、Ǣ | 阿拉伯聯合大公國 |
ç、č、ć、c̄、c̱ | c | Ç、Č、Ć、C̄、C̱ | C |
ď、d̄、ḏ | d | Ď、D̄、Ḏ | D |
ë、è、é、ê、ę、ě、ė、ē、ḗ、ḕ、ē̂、ē̃、ē̂、e̱、ë̄、e̊̄ | e | Ë、È、É、Ê、Ę、Ě、Ė、Ē、Ḗ、Ḕ、Ē̂、Ē̃、Ē̂、E̱、Ë̄、E̊̄ | E |
ğ、ḡ、g̱ | g | Ğ、Ḡ、G̱ | G |
ï、î、ì、í、ı、ī、ī́、ī̀、ī̂、ī̃、i̱ | i | Ï、Î、Ì、Í、I、Ī、Ī́、Ī̀、Ī̂、Ī̃、I̱ | I |
ľ、ł、l̄、ḹ、ḻ | l | Ł、Ľ、L̄、Ḹ、Ḻ | L |
ñ、ń、ň、n̄、ṉ | n | Ñ、Ń、Ň、N̄、Ṉ | 否 |
ö、ő、õ、ô、ō、ṓ、ṑ、ō̂、ō̃、ȫ、ō̈、ǭ、ȭ、ȱ、o̱ | o | Ö、Ő、Õ、Ô、Ō、Ṓ、Ṑ、Ō̂、Ō̃、Ȫ、Ō̈、Ǭ、Ȭ、Ȱ、O̱ | O |
ø、ø̄、œ̄ | oe | Ø、Ø̄、Œ̄ | OE |
ř、r̄、ṟ、ṝ | r | Ř、R̄、Ṟ、Ṝ | R |
ß | ss | ||
š、ś、ș、ş、s̄、s̱ | s | Š、Ś、Ș、Ş、S̄、S̱ | S |
ť、ț、t̄、ṯ | t | Ť、Ț、T̄、Ṯ | T |
ü、ù、û、ú、ů、ű、ū、ū́、ū̀、ū̂、ū̃、u̇̄、ǖ、ṻ、ṳ̄、u̱ | u | Ü、Ù、Û、Ú、Ů、Ű、Ū、Ū́、Ū̀、Ū̂、Ū̃、U̇̄、Ǖ、Ṻ、Ṳ̄、U̱ | U |
ÿ、ı、ȳ、ȳ́、ȳ̀、ȳ̃、y̱ | y | Ÿ、ı、Ȳ、Ȳ́、Ȳ̀、Ȳ̃、Y̱ | Y |
ź、ž、ż、z̄、ẕ | z | Ź、Ž、Ż、Z̄、Ẕ | Z |
移除字串中的變音符號
範例:以不含重音符號的同等字元取代含重音符號的字元。
運算式:NormalizeDiacritics([givenName])
範例輸入/輸出:
- 輸入 (givenName): "Zoë"
- 輸出:"Zoe"
Not
函式:Not(source)
描述:翻轉 source 的布林值。 如果 source 值為 True,則會傳回 False。 否則則會傳回 True。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | Boolean String | 預期的 source 值為 "True" 或 "False"。 |
Now
函式:Now()
描述:
Now 函數會傳回字串,代表以 M/d/yyyy h:mm:ss tt 格式表示的目前 UTC DateTime。
範例:Now()
範例值傳回了 7/2/2021 3:33:38 PM
NumFromDate
函式:NumFromDate(value)
描述:NumFromDate 函數會將 DateTime 值轉換成設定屬性 (例如 accountExpires) 所需的 Active Directory 格式。 您可以使用此函數,將從 Workday 和 SuccessFactors 等雲端 HR 應用程式收到的 DateTime 值轉換為其對等的 AD 表示法。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
value | 必要 | String | ISO 8601 格式的日期時間字串。 如果日期變數的格式不同,請使用 FormatDateTime 函數,將日期轉換為 ISO 8601 格式。 |
範例:
Workday 範例假設您想要將 Workday 中的 ContractEndDate 屬性 (格式為 2020-12-31-08:00) 對應至 AD 中的 accountExpires 欄位,您可以使用此函數,並將時區位移變更為符合您的地區設定。
NumFromDate(Join("", FormatDateTime([ContractEndDate], ,"yyyy-MM-ddzzz", "yyyy-MM-dd"), " 23:59:59-08:00"))
SuccessFactors 範例假設您想要將 SuccessFactors 中的 endDate 屬性 (格式為 M/d/yyyy hh:mm:ss tt) 對應至 AD 中的 accountExpires 欄位,您可以使用此函數,並將時區位移變更為符合您的地區設定。
NumFromDate(Join("",FormatDateTime([endDate], ,"M/d/yyyy hh:mm:ss tt","yyyy-MM-dd")," 23:59:59-08:00"))
PCase
函式:PCase(source, wordSeparators)
描述:PCase 函數會將字串中每個字組的第一個字元轉換為大寫,並將其他所有字元轉換為小寫。
參數:
名稱 | 必要/選用 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 要轉換為適當大小寫的 source 值。 |
wordSeparators | 選擇性 | String | 指定一組作為文字分隔符號的字元 (範例:" ,-'") |
備註:
- 如果未指定 wordSeparators 參數,則 PCase 會在內部叫用 .NET 函數 ToTitleCase,以將 source 字串轉換成適當的大小寫。 .NET 函數 ToTitleCase 支援一組完整的 Unicode 字元類別作為字組分隔符號。
- 空白字元
- 新行字元
- Control 字元,例如 CRLF
- Format 控制字元
- ConnectorPunctuation 字元,例如底線
- DashPunctuation 字元,例如破折號和連字號 (包括短破折號、長破折號、雙連字號等字元)
- 成對出現的 OpenPunctuation 與 ClosePunctuation 字元,例如括弧、大括弧、角括弧等。
- InitialQuotePunctuation 與 FinalQuotePunctuation 字元,例如單引號、雙引號和角引號。
- OtherPunctuation 字元,例如驚嘆號、數字記號、百分比符號、 & 符號、星號、逗號、句號、冒號、分號等。
- MathSymbol 字元,例如加號、小於和大於符號、分隔號、波狀符號、等號等。
- CurrencySymbol 字元,例如貨幣符號、一分符號、英鎊符號、歐元符號等。
- ModifierSymbol 字元,例如長音符號、強調符號、箭頭等。
- OtherSymbol 字元,例如版權符號、溫度符號、註冊商標符號等。
- 如果指定了 wordSeparators 參數,則 PCase 只會使用指定為字組分隔符號的字元。
範例:
假設您的來源是來自 SAP SuccessFactors 的 firstName 和 lastName 屬性,而在 HR 中,這兩個屬性都是大寫。 您可以使用 PCase 函數,將名稱轉換為適當的大小寫,如此處所示。
運算式 | 輸入 | 輸出 | 備註 |
---|---|---|---|
PCase([firstName]) |
firstName = "PABLO GONSALVES (SECOND)" | "Pablo Gonsalves (Second)" | 由於未指定 wordSeparators 參數,因此 PCase 函數會使用預設的字組分隔符號字元組。 |
PCase([lastName]," '-") |
lastName = "PINTO-DE'SILVA" | "Pinto-De'Silva" | PCase 函數會使用 wordSeparators 參數中的字元來識別字組,並將其轉換為適當的大小寫。 |
PCase(Join(" ",[firstName],[lastName])) |
firstName = GREGORY, lastName = "JAMES" | "Gregory James" | 您可以在 PCase 中將聯結函數巢狀化。 由於未指定 wordSeparators 參數,因此 PCase 函數會使用預設的字組分隔符號字元組。 |
RandomString
函數:RandomString(Length, MinimumNumbers, MinimumSpecialCharacters, MinimumCapital, MinimumLowerCase, CharactersToAvoid)
描述:RandomString 函數會根據指定的條件來產生隨機字串。 您可以在這裡找到允許的字元。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
長度 | 必要 | 數字 | 隨機字串的總長度。 這應該大於或等於 MinimumNumbers、MinimumSpecialCharacters 和 MinimumCapital 的總和。 最多 256 個字元。 |
MinimumNumbers | 必要 | 數字 | 隨機字串中的最小數目。 |
MinimumSpecialCharacters | 必要 | 數字 | 特殊字元的最小數目。 |
MinimumCapital | 必要 | 數字 | 隨機字串中的大寫字母最小數目。 |
MinimumLowerCase | 必要 | 數字 | 隨機字串中的小寫字母最小數目。 |
CharactersToAvoid | 選擇性 | String | 產生隨機字串時要排除的字元。 |
範例 1:- 在沒有特殊字元限制的情況下產生隨機字串:RandomString(6,3,0,0,3)
會產生 6 個字元的隨機字串。 字串包含 3 個數字和 3 個小寫字元 (1a73qt)。
範例 2:- 在具有特殊字元限制的情況下產生隨機字串:RandomString(10,2,2,2,1,"?,")
會產生 10 個字元的隨機字串。 字串包含至少 2 個數字、2 個特殊字元、2 個大寫字母、1 個小寫字母,並排除字元 "?" 和 "," (1@!2BaRg53)。
Redact
函式:Redact()
描述:Redact 函數會以佈建記錄中的字串常值 "[Redact]" 取代屬性值。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
屬性/值 | 必要 | String | 指定要從記錄修訂的屬性或常數/字串。 |
範例 1:修訂屬性:Redact([userPrincipalName])
會從佈建記錄中移除 userPrincipalName。
範例 2:修訂字串:Redact("StringToBeRedacted")
會移除佈建記錄中的常數字串。
範例 3:修訂隨機字串:Redact(RandomString(6,3,0,0,3))
會從佈建記錄中移除隨機字串。
RemoveDuplicates
函式:RemoveDuplicates(attribute)
描述:RemoveDuplicates 函數會接受多重值的字串,並確定每個值都是唯一的。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
attribute | 必要 | 多重值屬性 | 會移除重複項的多重值屬性 |
範例:RemoveDuplicates([proxyAddresses])
會傳回處理過的 proxyAddress 屬性,其中移除所有重複的值。
Replace
函式:Replace(source, oldValue, regexPattern, regexGroupName, replacementValue, replacementAttributeName, template)
描述:以區分大小寫的方式取代字串內的值。 函數的行為會根據提供的參數而有所不同:
提供 oldValue 和 replacementValue 時:
- 以 replacementValue 取代 source 中所有的 oldValue 項目
提供 oldValue 和 template 時:
- 以 source 值取代 template 中所有的 oldValue 項目
提供 regexPattern 和 replacementValue 時:
- 函式會將 regexPattern 套用至 source 字串,而您可以使用 regex 群組名稱來建構 replacementValue 的字串
注意
若要深入了解 regex 群組建構和具名子運算式,請參閱 規則運算式中的群組建構。
提供 regexPattern、regexGroupName、replacementValue 時:
- 函式會將 regexPattern 套用至 source 字串,並將所有符合 regexGroupName 的值取代為 replacementValue
提供 regexPattern、regexGroupName、replacementAttributeName 時:
- 如果 source 具有值,則傳回 source
- 如果 source 沒有值,函式會將 regexPattern 套用至 replacementAttributeName,並傳回符合regexGroupName 的值
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常為 source 物件的屬性名稱。 |
oldValue | 選擇性 | String | 在 source 或 template 中要被取代的值。 |
regexPattern | 選擇性 | String | 在 source中要被取代的值的規則運算式模式。 使用 replacementAttributeName 時,會套用 regexPattern,以從 replacementAttributeName 擷取值。 |
regexGroupName | 選擇性 | String | regexPattern內的群組名稱。 使用具名的 replacementAttributeName 時,我們會從 replacementAttributeName 擷取具名 regex 群組的值,並將其傳回,作為取代值。 |
replacementValue | 選擇性 | String | 要取代舊值的新值。 |
replacementAttributeName | 選擇性 | String | 要用於取代值的屬性名稱 |
範本 | 選擇性 | String | 提供 template 值時,我們會尋找範本內的 oldValue,並將其取代為 source 值。 |
使用規則運算式來取代字元
範例 1:使用 oldValue 和 replacementValue,將整個 source 字串取代為另一個字串。
假設您的 HR 系統具有屬性 BusinessTitle
。 而最近貴公司在進行職稱變更,想要將職稱「產品開發人員」更新為「軟體工程師」。
在此情況下,您可以在屬性對應中使用下列運算式。
Replace([BusinessTitle],"Product Developer", , , "Software Engineer", , )
- source:
[BusinessTitle]
- oldValue:"Product Developer"
- replacementValue:"Software Engineer"
- 運算式輸出:Software Engineer
範例 2:使用 oldValue 和 template,將 source 字串插入另一個範本化的字串。
參數 oldValue 在此案例中並不恰當。 這是實際上是個會被取代的值。
假設您想要一律產生格式為 <username>@contoso.com
的登入識別碼。 有一個名為 UserID 的來源屬性,而您想要將該值用在登入識別碼的 <username>
部分。
在此情況下,您可以在屬性對應中使用下列運算式。
Replace([UserID],"<username>", , , , , "<username>@contoso.com")
- source:
[UserID]
= “jsmith” - oldValue: "
<username>
" - template: "
<username>@contoso.com
" - 運算式輸出: "jsmith@contoso.com"
範例 3:使用 regexPattern 和 replacementValue 來擷取部分 source 字串,並以空字串,或使用 Regex 模式或 Regex 組名所建置的自訂值取代該字串部分。
假設您有 source 屬性 telephoneNumber
,其具有元件 country code
和 phone number
,且兩者以空白字元分隔。 例如,+91 9998887777
。在此案例中,您可以在屬性對應中使用下列運算式,來擷取 10 位數的電話號碼。
Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", , "${phoneNumber}", , )
- source:
[telephoneNumber]
= “+91 9998887777” - regexPattern: "
\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})
" - replacementValue: "
${phoneNumber}
" - 運算式輸出: 9998887777
您也可以使用此模式來移除字元並折疊字串。 例如,下列運算式會移除行動電話號碼字串中的括弧、虛線和空白字元,只會傳回數字。
Replace([mobile], , "[()\\s-]+", , "", , )
- source:
[mobile] = "+1 (999) 888-7777"
- regexPattern: "
[()\\s-]+
" - replacementValue: "" (空字串)
- 運算式輸出: 19998887777
範例 4:使用 regexPattern、regexGroupName 和 replacementValue 來擷取部分 source 字串,並將該字串部分取代為另一個常值或空字串。
假設您的來源系統具有屬性 AddressLineData,而此屬性包含了兩個元件:街道號碼和街道名稱的。 在最近的變更中,假設位址的街道號碼已變更,而您只想更新地址行中的街道號碼。 在此情況下,您可以在屬性對應中使用下列運算式來擷取街道號碼。
Replace([AddressLineData], ,"(?<streetNumber>^\\d*)","streetNumber", "888", , )
- source:
[AddressLineData]
= “545 Tremont Street” - regexPattern: "
(?<streetNumber>^\\d*)
" - regexGroupName: "streetNumber"
- replacementValue: "888"
- 運算式輸出: 888 Tremont Street
以下是另一個範例,其中 UPN 的網域尾碼會被取代為空字串,以產生沒有網域尾碼的登入識別碼。
Replace([userPrincipalName], , "(?<Suffix>@(.)*)", "Suffix", "", , )
- source:
[userPrincipalName]
= “jsmith@contoso.com” - regexPattern: "
(?<Suffix>@(.)*)
" - regexGroupName: "Suffix"
- replacementValue: "" (空字串)
- 運算式輸出: jsmith
範例 5:使用 regexPattern、regexGroupName 和 replacementAttributeName 來處理 source 屬性空白或沒有值的案例。
假設您的來源系統具有一個屬性 telephoneNumber。 如果 telephoneNumber 為空白,而您想要擷取行動電話號碼屬性的 10 位數字。 在此情況下,您可以在屬性對應中使用下列運算式。
Replace([telephoneNumber], , "\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})", "phoneNumber" , , [mobile], )
- source:
[telephoneNumber]
= “” (空字串) - regexPattern: "
\\+(?<isdCode>\\d* )(?<phoneNumber>\\d{10})
" - regexGroupName: "phoneNumber"
- replacementAttributeName:
[mobile]
= “+91 8887779999” - 運算式輸出: 8887779999
範例 6:您需要尋找符合規則運算式的字元,然後將其移除。
Replace([mailNickname], , "[a-zA-Z_]*", , "", , )
- source [mailNickname]
- oldValue: "john_doe72"
- replaceValue: ""
- 運算式輸出: 72
SelectUniqueValue
函式:SelectUniqueValue(uniqueValueRule1, uniqueValueRule2, uniqueValueRule3, …)
描述:至少需要兩個引數,也就是使用運算式定義的唯一值產生規則。 此函式會評估每個規則,接著檢查所產生的值在目標應用程式/目錄中的唯一性。 會傳回所找到的第一個唯一值。 如果目標中都已存在所有值,則項目會進行委付且會將原因記錄於稽核記錄中。 可提供的引數數目沒有上限。
此函數必須位於頂層,且無法巢狀化。
此函數無法套用至具有相符優先順序的屬性。
此函式只能用於建立項目。 搭配屬性使用此函式時,請將 [套用對應] 屬性設定為 [僅限物件建立期間]。
此函數目前支援搭配這些應用程式使用:
- Workday 到 Active Directory 使用者佈建
- SuccessFactors 到 Active Directory 使用者佈建
- API 驅動佈建至內部部署 Active Directory
不支援 SelectUniqueValue 與其他佈建應用程式搭配使用。
SelectUniqueValue 函數在內部部署 Active Directory 中執行的 LDAP 搜尋不會將特殊字元 (例如讀音符號) 逸出。 如果您傳遞包含特殊字元的字串 (例如 "Jéssica Smith"),則會發生處理錯誤。 請如範例所示,將 NormalizeDiacritics 函數巢狀化以標準化特殊字元。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
uniqueValueRule1 … uniqueValueRuleN | 至少需要 2 個,沒有上限 | String | 要評估的唯一值產生規則清單。 |
產生 userPrincipalName (UPN) 屬性的唯一值
範例:根據使用者的名字、中間名和姓氏,您必須先產生 UPN 屬性的值並檢查其在目標 AD 目錄中的唯一性,再將此值指派給 UPN 屬性。
Expression:
SelectUniqueValue(
Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"),
Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([PreferredFirstName], 1, 1), [PreferredLastName]))), "contoso.com"),
Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([PreferredFirstName], 1, 2), [PreferredLastName]))), "contoso.com")
)
範例輸入/輸出:
- 輸入 (PreferredFirstName):"John"
- 輸入 (PreferredLastName):"Smith"
- 輸出:如果 John.Smith@contoso.com 的 UPN 值尚未存在於目錄中,則為 "John.Smith@contoso.com"
- 輸出:如果 John.Smith@contoso.com 的 UPN 值已存在於目錄中,則為 "J.Smith@contoso.com"
- 輸出:如果以上兩個 UPN 值已存在於目錄中,則為 "Jo.Smith@contoso.com"
SingleAppRoleAssignment
函式:SingleAppRoleAssignment([appRoleAssignments])
描述:從針對特定應用程式指派給使用者的所有 appRoleAssignment 清單中傳回單一 appRoleAssignment。 需有此函式才能將 appRoleAssignments 物件轉換成單一角色名稱字串。 最佳做法是確保一次只將一個 appRoleAssignment 指派給一名使用者。 在使用者有多個應用程式角色指派的情節中,不支援此函數。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
[appRoleAssignments] | 必要 | String | [appRoleAssignments] 物件。 |
份額
函式:Split(source, delimiter)
描述:使用指定的分隔符號字元將字串分割成多重值陣列。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | source 值。 |
delimiter | 必要 | String | 指定會用來分割字串的字元 (範例:",") |
將字串分割成多重值陣列
範例:您必須採用以逗號分隔的字串清單,然後將其分割成可插入到多重值屬性 (例如 Salesforce 的 PermissionSets 屬性) 的陣列。 在此範例中,在 Microsoft Entra ID 的 extensionAttribute5 中填入權限集合清單。
運算式:Split([extensionAttribute5], ",")
範例輸入/輸出:
- 輸入 (extensionAttribute5): "PermissionSetOne, PermissionSetTwo"
- 輸出:["PermissionSetOne", "PermissionSetTwo"]
StripSpaces
函式:StripSpaces(source)
描述:移除 source 字串中的所有空格 (" ") 字元。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | source 值。 |
Switch
函式:Switch(source, defaultValue, key1, value1, key2, value2, …)
描述:當 source 值符合某個 key 時,傳回該 key 的 value。 如果 source 值不符合任何 key,則傳回 defaultValue。 key 和 value 參數必須永遠成對出現。 函式必須要有偶數數目的參數。 不應將函數用於參考屬性,例如 manager。
注意
Switch 函式會對 source 和 key 的值執行有區分大小寫的字串比較。 如果您想要執行不區分大小寫的比較,請先將 source 字串標準化,再使用巢狀的 ToLower 函式,並確定所有 key 字串都用小寫。
範例:Switch(ToLower([statusFlag]), "0", "true", "1", "false", "0")
。 在此範例中, source 屬性 statusFlag
可能具有值 ("True" / "true" / "TRUE")。 不過,Switch 函數一律會在與 key 參數進行比較之前,將其轉換成小寫字串 "true"。
警告
針對 source 參數,請勿使用巢狀函數 IsPresent、IsNull 或 IsNullOrEmpty。 請改用常值空字串作為其中一個索引鍵值。
範例:Switch([statusFlag], "Default Value", "true", "1", "", "0")
。 在此範例中,如果 source 屬性 statusFlag
是空白的,Switch 函數會傳回值 0。
警告
問題: 布建服務在使用 switch 語句時,在目標系統中錯誤地將屬性值設定為 null。
解決方案: 使用 IIF 語句而非 switch 語句來防止非預期的 Null 值,或使用 IgnoreFlowIfNullOrEmpty 函式搭配 switch 語句。 例如,switch([companyName], “External”, “Company A”, “A”, “Company B”, “B”) 應該以 IIF([companyName] = “Company A”, “A”, IIF([companyName] = “Company B”, “B”, “External”) 來表示。 如果預設值是屬性,請使用 IgnoreFlowIfNullOrEmpty(switch([companyName], [companyName], [companyName], “Company A”, “A”, “Company B”, “B”) 等表達式。
根本原因: 此問題專屬於Microsoft Entra ID 是來源系統和 switch 語句包含預設值的案例。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | Source 值。 |
defaultValue | 選擇性 | String | 當 source 不符合任何 key 時要使用的預設值。 可以是空字串 ("")。 |
key | 必要 | String | 要與 source 值比較的 key。 |
value | 必要 | String | 符合 key 的 source 的取代值。 |
根據預先定義的一組選項取代值
例如:根據儲存在 Microsoft Entra ID 中的狀態碼定義使用者的時區。 如果狀態碼不符合任何預先定義的選項,則使用 "Australia/Sydney" 的預設值。
Expression:Switch([state], "Australia/Sydney", "NSW", "Australia/Sydney","QLD", "Australia/Brisbane", "SA", "Australia/Adelaide")
範例輸入/輸出:
- 輸入 (state):"QLD"
- 輸出:"Australia/Brisbane"
ToLower
函式:ToLower(source, culture)
描述:採用 source 字串值,並使用所指定的文化特性 (Culture) 規則將其轉換成小寫。 如果未指定任何 culture 資訊,則會使用不因文化特性而異。
如果您想要將目標系統中的現有值設為小寫,請更新目標應用程式的結構描述,並針對您感興趣的屬性,將 caseExact 屬性設為 'true'。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常為 source 物件的屬性名稱 |
culture | 選擇性 | String | 根據 RFC 4646,文化特性 (Culture) 名稱的格式為 languagecode2-country/regioncode2,其中 languagecode2 是兩個字母的語言代碼,而 country/regioncode2 則是兩個字母的子文化特性代碼。 範例包括 ja-JP 代表日文 (日本),en-US 代表英文 (美國)。 如果沒有兩個字母的語言代碼可供使用,則會使用衍生自 ISO 639-2 的三個字母代碼。 |
將產生的 userPrincipalName (UPN) 值轉換成小寫
範例:您想要藉由串連 PreferredFirstName 和 PreferredLastName 來源欄位,並將所有字元轉換為小寫,以產生 UPN 值。
ToLower(Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"))
範例輸入/輸出:
- 輸入 (PreferredFirstName):"John"
- 輸入 (PreferredLastName):"Smith"
- 輸出:"john.smith@contoso.com"
ToUpper
函式:ToUpper(source, culture)
描述:採用 source 字串值,並使用所指定的文化特性 (Culture) 規則將其轉換成大寫。 如果未指定任何 culture 資訊,則會使用不因文化特性而異。
如果您想要將目標系統中的現有值設為大寫,請更新目標應用程式的結構描述,並針對您感興趣的屬性,將 caseExact 屬性設為 'true'。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常為 source 物件的屬性名稱。 |
culture | 選擇性 | String | 根據 RFC 4646,文化特性 (Culture) 名稱的格式為 languagecode2-country/regioncode2,其中 languagecode2 是兩個字母的語言代碼,而 country/regioncode2 則是兩個字母的子文化特性代碼。 範例包括 ja-JP 代表日文 (日本),en-US 代表英文 (美國)。 如果沒有兩個字母的語言代碼可供使用,則會使用衍生自 ISO 639-2 的三個字母代碼。 |
Word
函式:Word(String,WordNumber,Delimiters)
描述:Word 函數會根據描述所要使用分隔符號及要傳回字數的參數,傳回字串內包含的字組。 string 內以 delimiters 其中一個字元來分隔之字元的每個字串,都會被識別為單字:
如果數字 < 1,會傳回空字串。 如果 string 為 Null,會傳回空字串。 如果字串所含的字數不足,或者字串不包含任何分隔符號所識別的單字,就會傳回空字串。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
String | 必要 | 多重值屬性 | 要從中傳回字組的字串。 |
WordNumber | 必要 | 整數 | 用於識別應傳回字數的數字。 |
delimiters | 必要 | String | 代表應用來識別字組的分隔符號字串 |
範例:Word("The quick brown fox",3," ")
傳回 "brown"。
Word("This,string!has&many separators",3,",!&#")
傳回 "has"。
範例
本節提供更多運算式函數的使用範例。
刪去已知的網域名稱
從使用者的電子郵件刪去已知的網域名稱,以取得使用者名稱。 例如,如果網域是 "contoso.com",您可以使用下列運算式:
Expression:Replace([mail], "@contoso.com", , ,"", ,)
範例輸入/輸出:
- 輸入 (mail):"john.doe@contoso.com"
- 輸出:"john.doe"
串連部分名字和姓氏產生使用者別名
取出使用者名字的前三個字母和使用者姓氏的前五個字母來產生使用者別名。
Expression:Append(Mid([givenName], 1, 3), Mid([surname], 1, 5))
範例輸入/輸出:
- 輸入 (givenName):"John"
- 輸入 (surname):"Doe"
- 輸出:"JohDoe"
在姓氏和名字之間新增逗號。
在姓氏和名字之間新增逗號。
Expression:Join(", ", "", [surname], [givenName])
範例輸入/輸出:
- 輸入 (givenName):"John"
- 輸入 (surname):"Doe"
- 輸出:"Doe, John"
根據使用者的 Microsoft Entra 物件識別碼,為用戶產生識別碼。 從識別碼中移除任何字母,並在開頭新增 1000。
此運算式可讓您為開頭為 1000 且可能是唯一的用戶產生識別碼。
運算式: Join("", 1000, Replace(ConvertToUTF8Hex([objectId]), , "[a-zA-Z_]*", , "", , ))
範例輸入/輸出:
- 輸入:"00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
- 輸出:"100064303565343762312333930392343435612626135652636136306362633065346234"