撰寫運算式以在 Microsoft Entra ID 中進行屬性對應
在設定雲端同步時,運算式對應將是您可以指定的屬性對應類型之一。
運算式對應可讓您使用類似於指令碼的運算式來自訂屬性。 這可讓您將內部部署資料轉換成新的或不同的值。 例如,您可能會想要將兩個屬性結合成單一屬性,因為您有其中一個雲端應用程式會使用此單一屬性。
下列文件將說明用來轉換資料的類指令碼運算式。 這只是程序的一部分。 接下來,您必須使用此運算式,並將其放在租用戶的 Web 要求中。 如需其詳細資訊,請參閱轉換
語法概觀
屬性對應的運算式語法是 Visual Basic for Applications (VBA) 函式。
整個運算式必須以函式定義,由函式名稱後面接著以括號括住的引數組成:
FunctionName(<<argument 1>>
,<<argument N>>
)您可以在函式內互相巢狀函式。 例如:
FunctionOne(FunctionTwo(<<argument1>>
))您可以將三種不同類型的引數傳入函式:
- 屬性,必須以方括弧括住。 例如:[attributeName]
- 字串常數,必須以雙引號括住。 例如:"United States"
- 其他函式。 例如:FunctionOne(
<<argument1>>
、FunctionTwo(<<argument2>>
))
對於字串常數,如果您在字串中需要反斜線 ( \ ) 或引號 ( " ) ,則必須使用反斜線 ( \ ) 符號逸出。 例如:"Company name: \"Contoso\""
函數的清單
函數的清單 | 描述 |
---|---|
附加 | 取出 source 字串值並在結尾附加尾碼。 |
BitAnd | BitAnd 函式會在值中設定指定的位元。 |
CBool | CBool 函式會根據評估的運算式傳回布林值 |
ConvertFromBase64 | ConvertFromBase64 函式會將指定的 base64 編碼值轉換為一般字串。 |
ConvertToBase64 | ConvertToBase64 函式會將字串轉換為 Unicode Base64 字串。 |
ConvertToUTF8Hex | ConvertToUTF8Hex 函式會將字串轉換為 UTF8 十六進位編碼值。 |
Count | Count 函式會傳回多重值屬性中的元素個數 |
Cstr | CStr 函式會轉換為字串資料類型。 |
DateFromNum | DateFromNum 函式會將 AD 日期格式的值轉換為 DateTime 類型。 |
DNComponent | DNComponent 函式會從左邊傳回指定 DN 元件的值。 |
錯誤 | Error 函式是用來傳回自訂錯誤。 |
FormatDateTime | 從一種格式取出日期字串,並將它轉換成不同的格式。 |
GUID | 函式 GUID 會產生新的隨機 GUID。 |
IIF | IIF 函式會根據指定的條件傳回其中一組可能值。 |
InStr | InStr 函式會在字串中尋找第一個出現的子字串。 |
IsNull | 如果運算式評估為 Null,則 IsNull 函式會傳回 True。 |
IsNullOrEmpty | 如果運算式為 Null 或空字串,則 IsNullOrEmpty 函式會傳回 True。 |
IsPresent | 如果運算式評估為非 Null 且不是空字串,則 IsPresent 函式會傳回 True。 |
IsString | 如果運算式可評估為字串類型,則 IsString 函式會評估為 True。 |
項目 | Item 函式會從多重值字串/屬性傳回一個項目。 |
聯結 | Join() 類似 Append(),不過前者可以將多個 source 字串值合併成單一字串,且每個值會以 separator 字串分隔。 |
Left | Left 函式會從字串左邊傳回指定的字元數。 |
Mid | 傳回 source 值的子字串。 子字串是只包含 source 字串某些字元的字串。 |
NormalizeDiacritics | 需要一個字串引數。 傳回字串,但是當中所有的變音符號字元皆被同等的非變音符號字元取代。 |
Not | 翻轉 source 的布林值。 如果 source 值為 "True",則傳回 "False"。 反之則傳回 "True"。 |
RemoveDuplicates | RemoveDuplicates 函式會接受多重值的字串,並確定每個值都是唯一的。 |
Replace | 取代字串內的值。 |
SelectUniqueValue | 至少需要兩個引數,也就是使用運算式定義的唯一值產生規則。 此函式會評估每個規則,接著檢查所產生的值在目標應用程式/目錄中的唯一性。 |
SingleAppRoleAssignment | 從針對特定應用程式指派給使用者的所有 appRoleAssignment 清單中傳回單一 appRoleAssignment。 |
Split | 使用指定的分隔符號字元將字串分割成多重值陣列。 |
StringFromSID | StringFromSid 函式會將包含安全性識別碼的位元組陣列轉換為字串。 |
StripSpaces | 移除 source 字串中的所有空格 (" ") 字元。 |
Switch | 當 source 值符合某個 key 時,傳回該 key 的 value。 |
ToLower | 採用 source 字串值,並使用所指定的文化特性 (Culture) 規則將其轉換成小寫。 |
ToUpper | 採用 source 字串值,並使用所指定的文化特性 (Culture) 規則將其轉換成大寫。 |
Trim | Trim 函式會從字串移除開頭和結尾的空白字元。 |
單詞 | Word 函式會根據描述要使用之分隔符號及要傳回之字數的參數,傳回字串內含的單字。 |
附加
函式:
Append(source, suffix)
描述:
取出 source 字串值並在結尾附加尾碼。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常為 source 物件的屬性名稱。 |
尾碼 | 必要 | String | 您想要附加至 source 值結尾的字串。 |
BitAnd
描述:
BitAnd 函式會在值中設定指定的位元。
語法:
num BitAnd(num value1, num value2)
- value1,value2:應該使用 AND 連結在一起的數值
備註:
此函式會將這兩個參數轉換為二進位表示法,並將某一個位元設為:
- 0 - 如果 value1 和 value2 中有一或兩個對應位元為 0
- 1 - 如果這兩個對應位元都是 1。
換句話說,除非這兩個參數的對應位元都是 1,否則在所有情況下都會傳回 0。
範例:
BitAnd(&HF, &HF7)
傳回 7,因為十六進位 "F" AND "F7" 會評估為此值。
CBool
描述:
CBool 函式會根據評估的運算式傳回布林值
語法:
bool CBool(exp Expression)
備註:
如果運算式評估為非零值,CBool 就會傳回 True,否則會傳回 False。
範例:
CBool([attrib1] = [attrib2])
如果這兩個屬性的值相同,即會傳回 True。
ConvertFromBase64
描述:
ConvertFromBase64 函式會將指定的 base64 編碼值轉換為一般字串。
語法:
str ConvertFromBase64(str source)
- 假設使用 Unicode 進行編碼
str ConvertFromBase64(str source, enum Encoding)
- source:Base64 編碼的字串
- Encoding:Unicode、ASCII、UTF8
範例
ConvertFromBase64("SABlAGwAbABvACAAdwBvAHIAbABkACEA")
ConvertFromBase64("SGVsbG8gd29ybGQh", UTF8)
這兩個範例都會傳回 "Hello world!"
ConvertToBase64
描述:
ConvertToBase64 函式會將字串轉換為 Unicode Base64 字串。
將整數陣列的值轉換為其對等的字串表示法,此表示法是以 Base-64 數字編碼的。
語法:
str ConvertToBase64(str source)
範例:
ConvertToBase64("Hello world!")
傳回 "SABlAGwAbABvACAAdwBvAHIAbABkACEA"
ConvertToUTF8Hex
描述:
ConvertToUTF8Hex 函式會將字串轉換為 UTF8 十六進位編碼值。
語法:
str ConvertToUTF8Hex(str source)
備註:
Microsoft Entra ID 會使用此函式的輸出格式做為 DN 屬性格式。
範例:
ConvertToUTF8Hex("Hello world!")
傳回 48656C6C6F20776F726C6421
計數
描述:
Count 函式會傳回多重值屬性中的元素個數
語法:
num Count(mvstr attribute)
CStr
描述:
CStr 函式會轉換為字串資料類型。
語法:
str CStr(num value)
str CStr(ref value)
str CStr(bool value)
- value:可以是數值、參考屬性或布林值。
範例:
CStr([dn])
可能傳回 "cn=Joe,dc=contoso,dc=com"
DateFromNum
描述:
DateFromNum 函式會將 AD 日期格式的值轉換為 DateTime 類型。
語法:
dt DateFromNum(num value)
範例:
DateFromNum([lastLogonTimestamp])
DateFromNum(129699324000000000)
傳回代表 2012-01-01 23:00:00 的 DateTime
DNComponent
描述:
DNComponent 函式會從左邊傳回指定 DN 元件的值。
語法:
str DNComponent(ref dn, num ComponentNumber)
- dn:要解譯的參考屬性
- ComponentNumber:DN 中要傳回的元件
範例:
DNComponent(CRef([dn]),1)
如果 dn 為 "cn=Joe,ou=…",就會傳回 Joe
錯誤
描述:
Error 函式是用來傳回自訂錯誤。
語法:
void Error(str ErrorMessage)
範例:
IIF(IsPresent([accountName]),[accountName],Error("AccountName is required"))
如果 accountName 屬性不存在,即會擲回有關物件的錯誤。
FormatDateTime
函式:
FormatDateTime(source, inputFormat, outputFormat)
描述:
從一種格式取出日期字串,並將它轉換成不同的格式。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常為 source 物件的屬性名稱。 |
inputFormat | 必要 | String | source 值的預期格式。 如需支援的格式,請參閱 /dotnet/standard/base-types/custom-date-and-time-format-strings。 |
outputFormat | 必要 | String | 輸出日期的格式。 |
Guid
描述:
函式 GUID 會產生新的隨機 GUID
語法:
str Guid()
IIF
描述:
IIF 函式會根據指定的條件傳回其中一組可能值。
語法:
var IIF(exp condition, var valueIfTrue, var valueIfFalse)
- condition:可評估為 True 或 False 的任何值或運算式。
- valueIfTrue:條件評估為 True 時所傳回的值。
- valueIfFalse:條件評估為 false 時所傳回的值。
範例:
IIF([employeeType]="Intern","t-" & [alias],[alias])
如果使用者是實習生,就會傳回開頭加上 "t-" 的使用者別名,否則會依原樣傳回使用者的別名。
InStr
描述:
InStr 函式會在字串中尋找第一個出現的子字串
語法:
num InStr(str stringcheck, str stringmatch)
num InStr(str stringcheck, str stringmatch, num start)
num InStr(str stringcheck, str stringmatch, num start, enum compare)
- stringcheck:要搜尋的字串
- stringmatch:要尋找的字串
- start:開始尋找子字串的位置
- compare:vbTextCompare 或 vbBinaryCompare
備註:
會傳回找到子字串的位置,如果找不到,則傳回 0。
範例:
InStr("The quick brown fox","quick")
評估為 5
InStr("repEated","e",3,vbBinaryCompare)
評估為 7
IsNull
描述:
如果運算式評估為 Null,則 IsNull 函式會傳回 True。
語法:
bool IsNull(var Expression)
備註:
針對屬性,Null 表示該屬性不存在。
範例:
IsNull([displayName])
如果屬性不存在於 CS 或 MV 中,即會傳回 True。
IsNullOrEmpty
描述:
如果運算式為 Null 或空字串,則 IsNullOrEmpty 函式會傳回 True。
語法:
bool IsNullOrEmpty(var Expression)
備註:
針對屬性,如果屬性不存在,或存在但為空字串,即會評估為 True。
此函式的相反函式名稱為 IsPresent。
範例:
IsNullOrEmpty([displayName])
如果屬性不存在於 CS 或 MV 中或為空字串,即會傳回 True。
IsPresent
描述:
如果運算式評估為非 Null 且不是空字串,則 IsPresent 函式會傳回 True。
語法:
bool IsPresent(var expression)
備註:
這個函式的相反函式名稱為 IsNullOrEmpty。
範例:
Switch(IsPresent([directManager]),[directManager], IsPresent([skiplevelManager]),[skiplevelManager], IsPresent([director]),[director])
項目
描述:
Item 函式會從多重值字串/屬性傳回一個項目。
語法:
var Item(mvstr attribute, num index)
- attribute:多重值的屬性
- index:多重值字串中項目的索引。
備註:
Item 函式可以與 Contains 函式搭配使用,因為後者會將索引傳回多重值屬性中的項目。
如果索引超出範圍,即會擲回錯誤。
範例:
Mid(Item([proxyAddresses],Contains([proxyAddresses], "SMTP:")),6)
會傳回主要電子郵件地址。
IsString
描述:
如果運算式可評估為字串類型,則 IsString 函式會評估為 True。
語法:
bool IsString(var expression)
備註:
用來判斷 CStr() 是否可成功剖析運算式。
聯結
函式:
Join(separator, source1, source2, …)
描述:
Join() 類似 Append(),不過前者可以將多個 source 字串值合併成單一字串,且每個值會以 separator 字串分隔。
如果其中一個 source 值是多重值屬性,則該屬性中的每個值會聯結在一起,並以分隔符號值分隔。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
separator | 必要 | String | 用來分隔串連成一個字串的 source 值的字串。 如果不需要分隔符號,可以是 ""。 |
source1 sourceN | 必要,變動次數 | String | 要聯結在一起的字串值。 |
Left
描述:
Left 函式會從字串左邊傳回指定的字元數。
語法:
str Left(str string, num NumChars)
- string:要傳回字元的字串
- NumChars:數字,識別從 string 開頭 (左邊) 傳回的字元數
備註:
包含 string 中前 numChars 個字元的字串:
- 如果 numChars = 0,會傳回空字串。
- 如果 numChars < 0,會傳回輸入字串。
- 如果 string 為 Null,會傳回空字串。
如果 string 包含的字元數比 numChars 中指定的數目少,即會傳回與 string 完全相同的字串 (也就是,包含參數 1 中的所有字元)。
範例:
Left("John Doe", 3)
傳回 Joh
。
Mid
函式:
Mid(source, start, length)
描述:
傳回 source 值的子字串。 子字串是只包含 source 字串某些字元的字串。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常為屬性的名稱。 |
start | 必要 | 整數 | 子字串在 source 字串中起始位置的索引。 字串第一個字元的索引為 1,第二個字元的索引為 2,依此類推。 |
length | 必要 | 整數 | 子字串的長度。 如果長度超出 source 字串結尾,函式會傳回從 start 索引一直到 source 字串結尾的子字串。 |
NormalizeDiacritics
函式:
NormalizeDiacritics(source)
描述:
需要一個字串引數。 傳回字串,但是當中所有的變音符號字元皆被同等的非變音符號字元取代。 通常用於將包含變音符號字元 (重音符號) 的名字和姓氏,轉換成可用於如使用者主體名稱、SAM 帳戶名稱,與電子郵件地址等各種使用者識別碼中的有效值。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常是名字或姓氏屬性。 |
Not
函式:
Not(source)
描述:
翻轉 source 的布林值。 如果 source 值為 "True",則傳回 "False"。 反之則傳回 "True"。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | Boolean String | 預期的 source 值為 "True" 或 "False"。 |
RemoveDuplicates
描述:
RemoveDuplicates 函式會接受多重值的字串,並確定每個值都是唯一的。
語法:
mvstr RemoveDuplicates(mvstr 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 的字串
提供 regexPattern、regexGroupName、replacementValue 時:
- 函式會將 regexPattern 套用至 source 字串,並將所有符合 regexGroupName 的值取代為 replacementValue
提供 regexPattern、regexGroupName、replacementAttributeName 時:
- 如果 source 沒有值,則傳回 source
- 如果 source 具有值,則函式會將 regexPattern 套用至 source 字串,並將所有符合 regexGroupName 的值取代為與 replacementAttributeName 相關聯的值
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常為 source 物件的屬性名稱。 |
oldValue | 選擇性 | String | 在 source 或 template 中要被取代的值。 |
regexPattern | 選擇性 | String | 在 source中要被取代的值的規則運算式模式。 或者,如果使用了 replacementPropertyName,則為從 replacementPropertyName 擷取值的模式。 |
regexGroupName | 選擇性 | String | regexPattern內的群組名稱。 只有在使用了 replacementPropertyName 時,我們才會從 replacementPropertyName 擷取此群組的值作為 replacementValue。 |
replacementValue | 選擇性 | String | 要取代舊值的新值。 |
replacementAttributeName | 選擇性 | String | 要用於取代值的屬性名稱 |
範本 | 選擇性 | String | 提供 template 值時,我們會尋找範本內的 oldValue,並將其取代為 source 值。 |
SelectUniqueValue
函式:
SelectUniqueValue(uniqueValueRule1, uniqueValueRule2, uniqueValueRule3, …)
描述:
至少需要兩個引數,也就是使用運算式定義的唯一值產生規則。 此函式會評估每個規則,接著檢查所產生的值在目標應用程式/目錄中的唯一性。 將會傳回所找到的第一個唯一值。 如果所有值都已存在於目標中,則項目會進行委付且原因會記錄於稽核記錄中。 可提供的引數數目沒有上限。
注意
- 這是最上層函式,無法巢狀處理。
- 此函式無法套用至具有相符優先順序的屬性。
- 此函式只能用於建立項目。 搭配屬性使用此函式時,請將 [套用對應] 屬性設定為 [僅限物件建立期間]。
- 此函式目前僅支援「Workday 和 SuccessFactors 到 Active Directory 的使用者佈建」。 您無法將其與其他佈建應用程式搭配使用。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
uniqueValueRule1 … uniqueValueRuleN | 至少需要 2 個,沒有上限 | String | 要評估的唯一值產生規則清單。 |
SingleAppRoleAssignment
函式:
SingleAppRoleAssignment([appRoleAssignments])
描述:
從針對特定應用程式指派給使用者的所有 appRoleAssignment 清單中傳回單一 appRoleAssignment。 需有此函式才能將 appRoleAssignments 物件轉換成單一角色名稱字串。 請注意,最佳做法是確定一次只有一個 appRoleAssignment 會指派給一位使用者,如果多個角色受到指派,則傳回的角色字串可能不可預測。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
[appRoleAssignments] | 必要 | String | [appRoleAssignments] 物件。 |
份額
函式:
Split(source, delimiter)
描述:
使用指定的分隔符號字元將字串分割成多重值陣列。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | source 值。 |
delimiter | 必要 | String | 指定將用來分割字串的字元 (範例:",") |
StringFromSid
描述:
StringFromSid 函式會將包含安全性識別碼的位元組陣列轉換為字串。
語法:
str StringFromSid(bin ObjectSID)
StripSpaces
函式:
StripSpaces(source)
描述:
移除 source 字串中的所有空格 (" ") 字元。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | source 值。 |
Switch
函式:
Switch(source, defaultValue, key1, value1, key2, value2, …)
描述:
當 source 值符合某個 key 時,傳回該 key 的 value。 如果 source 值不符合任何 key,則傳回 defaultValue。 key 和 value 參數必須永遠成對出現。 函式必須要有偶數數目的參數。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 要檢查的來源值。 |
defaultValue | 選擇性 | String | 當 source 不符合任何 key 時要使用的預設值。 可以是空字串 ("")。 |
key | 必要 | String | 要與 source 值比較的 key。 |
value | 必要 | String | 符合 key 的 source 的取代值。 |
ToLower
函式:
ToLower(source, culture)
描述:
採用 source 字串值,並使用所指定的文化特性 (Culture) 規則將其轉換成小寫。 如果未指定任何 culture 資訊,則會使用不因文化特性而異。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常為 source 物件的屬性名稱 |
culture | 選擇性 | String | 根據 RFC 4646,文化特性 (Culture) 名稱的格式為 languagecode2-country/regioncode2,其中 languagecode2 是兩個字母的語言代碼,而 country/regioncode2 則是兩個字母的子文化特性代碼。 範例包括 ja-JP 代表日文 (日本),en-US 代表英文 (美國)。 如果沒有兩個字母的語言代碼可供使用,則會使用衍生自 ISO 639-2 的三個字母代碼。 |
ToUpper
函式:
ToUpper(source, culture)
描述:
採用 source 字串值,並使用所指定的文化特性 (Culture) 規則將其轉換成大寫。 如果未指定任何 culture 資訊,則會使用不因文化特性而異。
參數:
名稱 | 必要 / 重複 | 類型 | 備註 |
---|---|---|---|
source | 必要 | String | 通常為 source 物件的屬性名稱。 |
culture | 選擇性 | String | 根據 RFC 4646,文化特性 (Culture) 名稱的格式為 languagecode2-country/regioncode2,其中 languagecode2 是兩個字母的語言代碼,而 country/regioncode2 則是兩個字母的子文化特性代碼。 範例包括 ja-JP 代表日文 (日本),en-US 代表英文 (美國)。 如果沒有兩個字母的語言代碼可供使用,則會使用衍生自 ISO 639-2 的三個字母代碼。 |
Trim
描述:
Trim 函式會從字串移除開頭和結尾的空白字元。
語法:
str Trim(str value)
範例:
Trim(" Test ")
傳回 "test"。
Trim([proxyAddresses])
會移除 proxyAddress 屬性中每個值的開頭和結尾空格。
Word
描述:
Word 函式會根據描述要使用之分隔符號及要傳回之字數的參數,傳回字串內含的單字。
語法:
str Word(str string, num WordNumber, str delimiters)
- string:要傳回單字的字串
- WordNumber:一個數字,用於識別可傳回的字數。
- delimiters:字串,表示應用來識別單字的分隔符號
備註:
string 內以 delimiters 其中一個字元來分隔之字元的每個字串,都會被識別為單字:
- 如果數字 < 1,會傳回空字串。
- 如果 string 為 Null,會傳回空字串。
如果 string 所含的字數少於 number 個字,或者 string 不包含任何 delimeters 所識別的單字,就會傳回空字串。
範例:
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"
附加常數尾碼到使用者名稱
如果您使用 Salesforce 沙箱,您可能需要附加額外的尾碼到您所有的使用者名稱,才能進行同步處理。
Expression:
Append([userPrincipalName], ".test")
範例輸入/輸出:
- 輸入:(userPrincipalName):"John.Doe@contoso.com"
- 輸出:"John.Doe@contoso.com.test"
串連部分名字和姓氏產生使用者別名
您必須取出使用者名字的前 3 個字母和使用者姓氏的前 5 個字母來產生使用者別名。
Expression:
Append(Mid([givenName], 1, 3), Mid([surname], 1, 5))
範例輸入/輸出:
- 輸入 (givenName):"John"
- 輸入 (surname):"Doe"
- 輸出:"JohDoe"
移除字串中的變音符號
您必須以不含重音符號的同等字元取代含重音符號的字元。
Expression:
NormalizeDiacritics([givenName])
範例輸入/輸出:
- 輸入 (givenName): "Zoë"
- 輸出:"Zoe"
將字串分割成多重值陣列
您必須採用以逗號分隔的字串清單,然後將其分割成可插入到多重值屬性 (例如 Salesforce 的 PermissionSets 屬性) 的陣列。 在此範例中,已在 Microsoft Entra ID 的 extensionAttribute5 中填入權限集合清單。
Expression:
Split([extensionAttribute5], ",")
範例輸入/輸出:
- 輸入 (extensionAttribute5): "PermissionSetOne, PermissionSetTwo"
- 輸出:["PermissionSetOne", "PermissionSetTwo"]
以特定格式將日期輸出為字串
您想要以特定格式傳送日期到 SaaS 應用程式。
例如,您要格式化 ServiceNow 的日期。
Expression:
FormatDateTime([extensionAttribute1], "yyyyMMddHHmmss.fZ", "yyyy-MM-dd")
範例輸入/輸出:
- 輸入 (extensionAttribute1):"20150123105347.1Z"
- 輸出:"2015-01-23"
根據預先定義的一組選項取代值
您必須根據儲存在 Microsoft Entra ID 中的狀態碼定義使用者的時區。
如果狀態碼不符合任何預先定義的選項,則使用 "Australia/Sydney" 的預設值。
Expression:
Switch([state], "Australia/Sydney", "NSW", "Australia/Sydney","QLD", "Australia/Brisbane", "SA", "Australia/Adelaide")
範例輸入/輸出:
- 輸入 (state):"QLD"
- 輸出:"Australia/Brisbane"
使用規則運算式來取代字元
您需要尋找符合規則運算式的字元,然後將它們移除。
Expression:
Replace([mailNickname], , "[a-zA-Z_]*", , "", , )
範例輸入/輸出:
- 輸入 (mailNickname: "john_doe72"
- 輸出:"72"
將產生的 userPrincipalName (UPN) 值轉換成小寫
在以下範例中,會將 PreferredFirstName 與 PreferredLastName 來源欄位串連來產生 UPN 值,然後 ToLower 函式會對產生的字串進行操作以將所有字元轉換成小寫。
ToLower(Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))), "contoso.com"))
範例輸入/輸出:
- 輸入 (PreferredFirstName):"John"
- 輸入 (PreferredLastName):"Smith"
- 輸出:"john.smith@contoso.com"
產生 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"