Microsoft Identity Manager 2016 的函數參考

BitOr
Description BitOr 函式會在某個旗標上將指定的位元設定為 1。
函式簽章 Int BitOr(mask, flag)
輸入
  • mask:指定要在 標上設定之位的十六進位值。
  • 標:要修改特定位的十六進位值。
Operations 此函式會將兩個參數轉換為二進位的形式並進行比較:
  • 如果 遮罩 標中的一個或兩個對應位是1,則將一個位設定為1。
  • 如果兩個對應位都是0,則將位設定為0。
  • 在所有情況下都會傳回1,除非兩個參數的對應位都是0。
  • 產生的位模式是兩個運算元中任一個的 "set" (1 或 true) 位。
  • 如果多個位在遮罩中具有值1,則可以設定多個標位。
輸出 新版本的 標,且 mask 中指定的位會設定為1。

BitAnd
Description BitAnd 函式會在某個旗標上將指定的位元設定為 0。
函式簽章 Int BitOr(mask, flag)
輸入
  • mask:指定要在 標上修改之位的十六進位值。
  • 標:要修改特定位的十六進位值。
Operations 此函式會將兩個參數轉換為二進位的形式並進行比較:
  • 如果 遮罩 標中的一個或兩個對應位都是0,則將位設定為0。
  • 如果兩個對應位都是1,則將位設為1。
  • 在所有情況下都會傳回0,但兩個參數的對應位都是1。
  • 如果多個位在遮罩中的值為0,則可以將多個標位設定為0。
輸出 新版 flag,其中 mask 內指定的位元設定為 0。

DateTimeFormat
Description DateTimeFormat 函式會將字串格式的 DateTime 設定為指定格式。
函式簽章 String DateTimeFormat(dateTime, format)
輸入
  • datetime:代表要格式化之日期時間的字串。
  • 格式:字串,表示要轉換成的格式。

注意:如需建立使用者定義格式所接受的字元,請參閱 使用者定義的日期/時間格式
Operations 格式中指定的格式字串會套用至日期時間字串中的日期時間。 格式指定的字串必須是有效的日期時間格式。 如果不是,則會傳回錯誤表示格式不是有效的 DateTime 格式。 例如: DateTime("12/25/2007", "yyyy-MM-dd") 結果為 "2007-12-25"
輸出 格式套用dateTime所產生的字串。

ConvertSidToString
Description ConvertSidToString 會將包含安全性識別碼的位元組陣列轉換為字串。
函式簽章 String ConvertSidToString(ObjectSID)
輸入 ObjectSID:位元組陣列,其中包含 (SID) 的安全識別碼。
Operations 指定的二進位 SID 會轉換為字串。
輸出 SID 的字串表示法。

ConvertStringToGuid
Description ConvertStringToGuid 函式會將 GUID 的字串表示法轉換為 GUID 的二進位表示法。
函式簽章 Byte[] ConvertStringToGuid(stringGuid)
輸入 stringGuid:在模式中格式化的字串 ,其中 GUID 的值會表示為8、4、4、4和12位數群組中的一系列十六進位數位,並以連字號分隔。 傳回值的範例為 382c74c3-721d-4f34-80e557657b6cbc27
Operations StringGuid會轉換為其二進位表示。 如果字串不是有效 GUID 的標記法,則函式會拒絕引數,並出現錯誤「ConvertStringToGuid 函式的參數必須是代表有效 Guid 的字串」。
輸出 GUID 的二進位標記法。

ReplaceString
Description ReplaceString 函式會將某個字串出現的所有地方取代為另一個字串。
函式簽章 String ReplaceString(string, OldValue, NewValue)
輸入
  • string:要取代值的字串。
  • OldValue:要搜尋並取代的字串。
  • NewValue:要取代的字串。
Operations 字串中所有出現的OldValue都會以NewValue取代。 函數必須能夠處理\n 的特殊字元 新行、 \r. 換行字元和 定位字元 \t。 索引標籤。例如:傳回
輸出 所有 OldValue 項目都被 NewValue 取代的字串。

資料擷取函式

資料擷取函式可用來執行作業,以從字串擷取所需的字元。

Word
Description Word 函式會根據描述要使用之分隔符號及要傳回之字數的參數,傳回字串內含的單字。
函式簽章 String Word(string, number, delimiters)
輸入
  • 字串:要從中傳回單字的字串。
  • 數位:數位,可識別應該傳回的文字型大小碼。
  • 分隔符號:字串,表示應該用來識別單字的分隔符號。
Operations 字串中的每個字元字串(以分隔符號中的其中一個字元分隔)都會識別為單字。 如果 string 為 null,則函數會傳回空字串。 在 [ 數位 ] 中指定的位置上所找到的單字會傳回。 如果數位 1,函數會傳回空字串。 例如:
  • Word("Test;of%function;", 3, ";$&%") 會傳回 "function"
  • Word("Test;;Function" , 2 , ";") 傳回 "" (空的字串) 。
  • Word("Test;of%function;", 0, ";$&%") 傳回 "" (空的字串) 。
輸出 包含位於使用者要求位置之單字的字串。 如果 字串 包含的字數少於文字 數目 ,或 字串 未包含任何以分隔符號識別的文字 則會傳回空字串。

Left
Description Left 函式會從左 (開始) 字串開始傳回指定的字元數。
函式簽章 String Left(string, numChars)
輸入
  • 字串:要從中傳回字元的字串。
  • numChars:數位,識別要從字串開頭傳回的字元數。
Operations numChars 字元是從 字串的第一個位置傳回。 例如:傳回 Left("Britta Simon", 3)"Bri"
輸出 字串,包含字串中的第一個numChars字元。 如果 numChars = 0,則函數會傳回空字串。 如果numChars 0,則函數會傳回輸入字串。 如果 string 為 null,則函數會傳回空字串。

Right
Description Right 函式會從字串右邊 (結尾處) 傳回指定的字元數。
函式簽章 String Right(string, numChars)
輸入
  • 字串:要從中傳回字元的字串。
  • numChars:數位,識別要從字串結尾傳回的字元數。
Operations 字串的結尾傳回numChars字元。 例如:傳回 Right("Britta Simon", 3)"mon"
輸出 字串,包含字串中的最後numChars個字元。 如果 numChars = 0,則函數會傳回空字串。 如果numChars 0,則函數會傳回輸入字串。 如果 string 為 null,則函數會傳回空字串。 如果 字串 包含的字元數比 numChars中指定的數目少,則會傳回 string

Mid
Description Mid 函式會從字串中的指定位置傳回指定的字元數。
函式簽章 String Mid(string, pos, numChars)
輸入
  • 字串:要從中傳回字元的字串。
  • pos:一個數位,用來識別字串中傳回字元的開始位置。
  • numChars:數位,識別要從字串中的位置傳回的字元數。
Operations 傳回字串中的位置Pos開頭的numChars字元。 例如:傳回 Mid("Britta Simon", 3, 5)"itta "
輸出 字串,包含字串中位置posnumChars字元。 如果 numChars = 0,則函數會傳回空字串。 如果numChars 0,則函數會傳回空字串。 如果pos字串的長度,函數會傳回輸入字串。 如果pos = 0,則函數會傳回輸入字串。 如果 string 為 null,則函數會傳回空字串。 如果字串中沒有剩餘的不足 numchar字元,則會傳回最多的字元。

資料產生函式

資料產生函式可用來產生特定資料類型的值。

CRLF
Description CRLF 函式會產生一個回車/換行字元。 使用此函式來加入新的一行。
函式簽章 String CRLF
輸入 無。
Operations 會傳回 CRLF。 例如:
AddressLine1 + CRLF() + AddressLine2
結果 AddressLine1
AddressLine2.
輸出 CRLF 為輸出。

RandomNum
Description RandomNum 函式會從指定的區間內傳回一個隨機數字。
函式簽章 Int RandomNum(start, end)
輸入
  • 開始:識別要產生之隨機值下限的數位。
  • end:識別要產生之隨機值上限的數位。
Operations 會產生大於或等於 start 且小於或等於 end 的隨機數字。 例如: Random(0,999) 可能會傳回 100
輸出 startend 指定之範圍內的隨機數字。

EscapeDNComponent
Description MIISUtils 的 EscapeDNComponent 方法是用來執行此作業。 這個方法會根據所使用的管理代理程式類型 (MA) 來處理輸入字串。
函式簽章 String EscapeDNComponent(string)
輸入 字串:用來處理辨別名稱的字串。 字串不應包含逸出字元。
Operations 不同的 Ma 需要不同的辨別名稱格式。 這個方法會根據下列 MA 類型來處理輸入 字串
  • LDAP 辨別名稱:此 MA 類型的範例包括 Active Directory Domain Services、Sun 目錄伺服器 (先前 IPlanet 的目錄伺服器) ,以及 Microsoft Exchange Server。
    • 指定部分的值部分中任何不正確 XML 字元都是以十六進位編碼。
    • 任何不合法的字元 (包含不正確 XML 字元) 在指定元件的名稱部分中,會產生錯誤。
    • 換用的字元包括逗號 (、) 、等於 (=) ,加上 (+) 、小於 (<) 、大於 (>) 、數位 ( # ) 、分號 (、) 、反斜線 () 和雙引號 (」 ) 。
    • 如果 字串 中的最後一個字元是 ( ) 的空間,則會將該空格進行轉義。
    • 部分名稱前後任何多餘的前置或尾端空格都會被移除。
    • 針對 XML MA,如果有多個部分,則會依字母順序排列這些部分。
    • 如果指定了多個部分,複合的辨別名稱字串會是個別字串的串連,再加上 (+) 號。
    • 如果輸入 字串 不是格式正確的 LDAP 樣式辨別名稱字串,就會產生錯誤。
  • 階層式非 LDAP:這種 MA 類型的範例是 Microsoft Lotus Notes。
    • 此 MA 類型不支援多元件元件。
    • 如果將多個字串傳遞給,則會擲回 EscapeDNComponentEscapeDNComponent
    • 如果輸入 字串 中的任何字元是不正確 XML 字元,則會擲回 ArgumentException
    • 輸入 字串 中的所有逗號 (、) 和反斜線 (/) 都會進行轉義。
    • 如果 字串 中的最後一個字元是 ( ) 的空間,則會將該空格進行轉義。
  • 建:此MA 類型的範例包括不含 LDAP 辨別名稱的資料庫或 XML。
    • 如果有任何部分是二進位或包含不正確 XML 字元,該部分會以十六進位編碼版本的原始資料儲存,並在字串前面加上數位 ( # ) 字元。 例如,如果元件是 (, AxC 其中 x 代表不合法的 XML 字元(例如 0x10) ),該部分會編碼為 #410010004300 。 否則,這些字元的所有實例都會被轉義:反斜線 () 、逗號 (、) ,以及 (+) 和數位 ( # ) 。
    • 如果指定之部分字串中的最後一個字元是 ( ) 的空間,則會將該空格進行轉義。
    • 如果指定了多個部分,複合的辨別名稱字串會是以加號分隔所有個別字串的串連。
輸出 包含有效網域名稱的字串。

注意

與 LDAP 規格中定義的語法相較,辨別名稱的驗證較不嚴格。 EscapeDNComponent(String[]) 允許元件名稱包含一或多個字元 ' a'-'z-a'-'z '、' A'-'z-A'-'z '、' 0 '-' 9 '、'-' 和 '. ' 的任何組合。

您無法使用這個方法來指定二進位部分。 不過,如果辨別名稱是從錨點屬性建構,而且其中一個錨點屬性是二進位類型,則 CommitNewConnector 中可以有二進位部分。


Null
Description Null 函式是用來指定 MA 沒有要參與的屬性,而且屬性優先順序應該繼續下一個 MA。
函式簽章 String Null
輸入 無。
Operations 會傳回 Null。 例如:傳回 IIF(Eq(domain), "unknown", Null())Null
輸出 輸出是 Null。

邏輯函式

邏輯函式是用來根據系統所評估的條件執行作業。

IIF
Description IIF 函式會根據指定的條件傳回其中一組可能值。
函式簽章 Object IIF(condition, valueIfTrue, valueIfFalse)
輸入
  • condition:可評估為 true 或 false 的任何值或運算式。 下列函數可作為條件之 IIF 函數中的運算式使用
    • Eq:此函式會比較兩個引數是否相等。
    • NotEquals:此函式會比較兩個引數是否不相等,如果不相等則傳回 true,如果相等則傳回 false。 例如:NotEquals(EmployeeType, "Contractor")
    • LessThan:此函式會比較兩個數字,如果第一個數位小於第二個數字則傳回 true,否則傳回 false。 例如:LessThan(Salary, 100000)
    • GreaterThan:此函式會比較兩個數字,如果第一個數位大於第二個數字則傳回 true,否則傳回 false。 例如:GreaterThan(Salary, 100000)
    • LessThanOrEquals:此函式會比較兩個數字,如果第一個數位小於或等於第二個數字則傳回 true,否則傳回 false。 例如:LessThanOrEquals(Salary, 100000)
    • GreaterThanOrEquals:此函式會比較兩個數字,如果第一個數位大於或等於第二個數字則傳回 true,否則傳回 false。 例如:GreaterThanOrEquals(Salary, 100000)
    • IsPresent:此函式會接受 ILM 架構中的屬性作為輸入,如果屬性不是 null,則傳回 true,如果屬性為 null,則傳回 false。
  • valueIfTrue條件 評估為 true 時所傳回的值。
  • valueIfFalse條件 評估為 false 時所傳回的值。
Operations 如果 條件 評估為 true,則函式會傳回 valueIfTrue。 否則,函數會傳回 valueIfFalse。 例如: IIF(Eq(EmployeeType,"Intern"),"t-" + Alias, Alias) 如果使用者為實習,則會傳回使用者的別名,並在別名開頭加入 "t-"。 否則,此函式會依原樣傳回使用者的別名。
輸出 如果條件為 true,則輸出會是 valueIfTrue ,如果條件為 false,則為 valueIfFalse

在 Microsoft Identity Manager (MIM) 2016 中,函式可讓您先修改屬性值,再將它們傳送到函式活動或宣告式佈建中的目標。 這份文件的目標是提供您可用函式的概觀,以及其使用方式的說明。

設定同步處理規則時,設定屬性流程對應是基本的工作。 屬性流程對應的最簡單形式是直接對應。 如名稱所示,直接對應會採用來源屬性的值,並將它套用到已設定的目的地屬性。 在某些情況下,您必須在系統將來源屬性值套用到目的地之前修改現有的屬性值,或者計算新的值。

函式是內建方法,用來定義當產生目的地屬性值時,同步處理引擎必須套用的修改類型。

MIM 函式會散佈到下列類別:

  • 資料操作:在字串上執行各種操作操作。

  • 資料抓取:將資料從屬性值解壓縮。

  • 產生資料:產生值。

  • 邏輯:根據條件執行作業。

以下各節提供有關各類別中函式的詳細資料。

資料操作函式

用來執行各種不同的字串操作作業的資料操作函式。

Concatenate
Description 串連函數會串連兩個或多個字串。
函式簽章 string1 + string2...
輸入 兩個或多個字串。
Operations 所有輸入字串參數會彼此串連。
輸出 一個字串。

UpperCase
Description UpperCase 函式會將字串中的所有字元都轉換為大寫。
函式簽章 String UpperCase(string)
輸入 一個字串。
Operations 輸入參數的所有小寫字元都轉換成大寫字元。 例如: UpperCase("test") 結果為 "TEST"
輸出 一個字串。

LowerCase
Description LowerCase 函式會將字串中的所有字元都轉換為小寫。
函式簽章 String LowerCase(string)
輸入 一個字串。
Operations 輸入參數的所有大寫字元都會轉換成小寫字元。 例如: LowerCase("TeSt") 結果為 "test"
輸出 一個字串。

ProperCase
Description ProperCase 函式會將字串中每個空格分隔單字的第一個字元轉換成大寫。 所有其他字元都會轉換成小寫。
函式簽章 String ProperCase(string)
輸入 一個字串。
Operations 輸入參數中每個以空格分隔之單字的第一個字元會轉換成大寫。 所有大寫字元都會轉換成小寫字元。 如果輸入參數中的單字以非字母字元開頭,則不會將單字的第一個字元轉換為大寫。 例如:
  • ProperCase("TEsT") 結果為 "Test"
  • ProperCase("britta simon") 結果為 "Britta Simon"
  • ProperCase(" TEsT") 結果為 " Test"
  • ProperCase("\$TEsT") 結果為 "\$Test"
輸出 一個字串。

LTrim
Description LTrim 函式會從字串中移除開頭的空白字元。
函式簽章 String LTrim(string)
輸入 一個字串。
Operations 會移除輸入參數中包含的開頭空白字元。 例如: LTrim(" Test ") 結果為 "Test "
輸出 一個字串。

RTrim
Description RTrim 函數會從字串中移除尾端空白字元。
函式簽章 String RTrim(string)
輸入 一個字串。
Operations 輸入參數中包含的尾端空白字元會被移除。 例如: RTrim(" Test ") 結果為 " Test"
輸出 一個字串。

Trim
Description Trim 函式會從字串中移除開頭和尾端的空白字元。
函式簽章 String Trim(string)
輸入 一個字串。
Operations 字串中包含的開頭和尾端空白字元會被移除。 例如: Trim(" Test ") 結果為 "Test"
輸出 一個字串。

RightPad
Description RightPad 函式會使用提供的填補字元,從右邊將字串填補到指定的長度。
函式簽章 String RightPad(string, length, padCharacter)
輸入
  • 字串:要填補的字串。
  • 長度:代表所需字串長度的整數。
  • padCharacter:字串,其中包含要當做填補字元使用的單一字元。
Operations 如果 字串 的長度小於 Length,則 padCharacter 會重複附加至 字串 結尾,直到 字串 長度等於 length為止。 例如:
  • RightPad("User", 10, "0") 結果為 "User000000"
  • RightPad(RandomNum(1,10), 5, "0") 可能會導致 "9000"
輸出 如果 string 的長度大於或等於 length,則會傳回與 string 完全相同的字串。 如果 字串 的長度小於 length,則會傳回所需長度的新字串。 新字串包含以padCharacter填補的字串。 如果 string 為 null,則函數會傳回空字串。

注意padCharacter 可以是空白字元,但不能是 null 值。 如果 字串 的長度等於或大於 長度,則會原封不動地傳回 字串

LeftPad
Description LeftPad 函式會使用提供的填補字元,從左邊將字串填補到指定的長度。
函式簽章 String LeftPad(string, length, padCharacter)
輸入
  • 字串:要填補的字串。
  • 長度:代表所需字串長度的整數。
  • padCharacter:字串,其中包含要當做填補字元使用的單一字元。
Operations 如果 字串 的長度小於 Length,則 padCharacter 會重複附加至 字串 開頭,直到 字串 長度等於 length為止。 例如:
  • RightPad("User", 10, "0") 結果為 "000000User"
  • RightPad(RandomNum(1,10), 5, "0") 可能會導致 "0009"
輸出 如果 string 的長度大於或等於 length,則會傳回與 string 完全相同的字串。 如果 字串 的長度小於 length,則會傳回所需長度的新字串。 新字串包含以padCharacter填補的字串。 如果 string 為 null,則函數會傳回空字串。

注意padCharacter 可以是空白字元,但不能是 null 值。 如果 字串 的長度等於或大於 長度,則會原封不動地傳回 字串