2016 Microsoft Identity Manager的函数参考

BitOr
说明 BitOr 函数将标志上的指定位设置为 1。
函数签名 Int BitOr(mask, flag)
输入
  • mask:一个十六进制值,指定在标志 上设置的
  • flag:要修改特定位的十六进制值。
操作 此函数将两个参数转换为二进制表示形式,并进行比较:
  • 如果掩码和标志中的一个或两个相应位为 1,则将位设置为1。
  • 如果两个对应的位都为 0,则将位设置为 0。
  • 在所有情况下返回 1,但两个参数的相应位为 0 的情况除外。
  • 生成的位模式是"set" (1 或 true) 两个操作数之一的位。
  • 如果 多个 位在掩码 中具有值 1,可以设置多个 标志位
Output 标志的 新版本, 掩码中指定的 设置为 1。

BitAnd
说明 BitAnd 函数将标志上的指定位设置为 0。
函数签名 Int BitOr(mask, flag)
输入
  • mask:一个十六进制值,指定在标志 上修改 的位
  • flag:要修改特定位的十六进制值。
操作 此函数将两个参数转换为二进制表示形式,并进行比较:
  • 如果掩码和标志中的一个或两个相应位为 0,则将位设置为0。
  • 如果两个对应的位都为 1,则将位设置为 1。
  • 在所有情况下返回 0,但两个参数的相应位为 1 的情况除外。
  • 如果多个位在掩码 中具有值 0,可以将多个标志位设置为0。
Output 将 mask 中指定的位设置为 0 的新版标志

DateTimeFormat
说明 DateTimeFormat 函数用于将字符串形式的日期时间设置为指定格式。
函数签名 String DateTimeFormat(dateTime, format)
输入
  • dateTime:表示要格式化的 DateTime 的字符串。
  • format:表示要转换为的格式的字符串。

注意:有关创建用户定义格式时接受的字符,请参阅 用户定义的日期/时间格式
操作 格式中指定的格式字符串将应用于 dateTime 字符串中的DateTime。 以 格式指定的 字符串 必须是有效的 DateTime 格式。 否则,将会返回错误,指明 format 指定的日期时间格式无效。 例如: DateTime("12/25/2007", "yyyy-MM-dd") 结果为 "2007-12-25"
Output 将格式应用于dateTime 生成的字符串

ConvertSidToString
说明 ConvertSidToString 将包含安全标识符的字节数组转换为字符串。
函数签名 String ConvertSidToString(ObjectSID)
输入 ObjectSID:包含安全标识符的字节数组 (SID) 。
操作 将指定的二进制 SID 转换为字符串。
Output 字符串表示形式的 SID。

ConvertStringToGuid
说明 ConvertStringToGuid 函数将字符串表示形式的 GUID 转换为二进制表示形式的 GUID。
函数签名 Byte[] ConvertStringToGuid(stringGuid)
输入 stringGuid:采用 模式格式的字符串,其中 GUID 的值以一系列十六进制数字表示,以 8、4、4、4 和 12 位组成,用连字符分隔。 返回值的一个示例是 382c74c3-721d-4f34-80e557657b6cbc27
操作 stringGuid转换为其二进制表示形式。 如果字符串不是有效 GUID 的表示形式,则函数将拒绝参数,并出现错误"ConvertStringToGuid 函数的参数必须是表示有效 Guid 的字符串。"
Output GUID 的二进制表示形式。

ReplaceString
说明 ReplaceString 函数在一个字符串出现的所有地方将它全部替换为另一个字符串。
函数签名 String ReplaceString(string, OldValue, NewValue)
输入
  • string:要替换值的字符串。
  • OldValue:要搜索和替换的字符串。
  • NewValue:要替换到的字符串。
操作 字符串中 出现的所有 OldValue 替换为 NewValue。 函数必须能够处理特殊字符 \n换行、\r. 回车符和 \t. 制表符。例如: 返回
Output 出现的所有 OldValue 全部替换为 NewValue 的字符串。

数据检索函数

数据检索函数用于执行操作,以便从字符串中检索相应字符。

Word
说明 基于描述要使用的分隔符与要返回的单词数的参数,Word 函数返回字符串中包含的单词。
函数签名 String Word(string, number, delimiters)
输入
  • string:从中返回单词的字符串。
  • number:一个数字,用于标识应返回的字号。
  • 分隔符:表示应用于标识单词的分隔符的字符串。
操作 字符串中由分隔符中的一个字符分隔的每个字符串都标识为单词。 如果 string 为 null,则函数返回空字符串。 返回在 number 中 指定的位置找到 的单词。 如果 数字 1,则函数返回空字符串。 例如:
  • Word("Test;of%function;", 3, ";$&%") 返回 "function"
  • Word("Test;;Function" , 2 , ";") 返回 "" (空字符串) 。
  • Word("Test;of%function;", 0, ";$&%") 返回 "" (空字符串) 。
Output 包含用户指定位置处的字词的字符串。 如果字符串包含的单词数少于 ,或者字符串不包含由分隔符标识的任何单词,则返回空字符串。

说明 Left 函数从字符串开头的左侧 (指定) 字符数。
函数签名 String Left(string, numChars)
输入
  • string:用于返回字符的字符串。
  • numChars:一个数字,用于标识从字符串开头返回的字符数。
操作 numChars 字符从字符串 的第一个位置 返回。 例如: Left("Britta Simon", 3) 返回 "Bri"
Output 一个字符串,包含字符串 中的第一个 numChars字符。 如果 numChars = 0,则函数返回空字符串。 如果为 numChars 0,则函数返回输入字符串。 如果 string 为 null,则函数返回空字符串。

Right
描述 Right 函数从字符串右侧(末尾)起返回指定的字符数。
函数签名 String Right(string, numChars)
输入
  • string:用于返回字符的字符串。
  • numChars:一个数字,用于标识从字符串末尾返回的字符数。
操作 字符串 的末尾返回 numChars字符。 例如: Right("Britta Simon", 3) 返回 "mon"
Output 一个字符串,包含字符串 中的最后一个 numChars字符。 如果 numChars = 0,则函数返回空字符串。 如果为 numChars 0,则函数返回输入字符串。 如果 string 为 null,则函数返回空字符串。 如果 字符串 包含的字符数少于 numChars中指定的字符数, 则返回 字符串。

Mid
说明 Mid 函数从字符串指定位置起返回指定的字符数。
函数签名 String Mid(string, pos, numChars)
输入
  • string:用于返回字符的字符串。
  • pos:一个数字,用于标识字符串中用于返回字符的起始位置。
  • numChars:一个数字,用于标识从字符串中的位置返回的字符数。
操作 从字符串 中的位置位置开始返回numChars字符。 例如: Mid("Britta Simon", 3, 5) 返回 "itta "
Output 一个字符串,包含字符串 中位置位置中的numChars字符 如果 numChars = 0,则函数返回空字符串。 如果为 numChars 0,则函数返回空字符串。 如果表示 字符串的长度,则函数返回输入字符串。 如果pos = 0,则函数返回输入字符串。 如果 string 为 null,则函数返回空字符串。 如果位置 pos 的字符串中没有剩余的numChar字符,则返回尽可能多的字符。

数据生成函数

数据生成函数用于生成特定数据类型的值。

CRLF
说明 CRLF 函数生成回车/换行符。 使用此函数添加新行。
函数签名 String CRLF
输入 无。
操作 返回 CRLF。 例如:
AddressLine1 + CRLF() + AddressLine2
结果 AddressLine1
AddressLine2.
Output 输出是 CRLF。

RandomNum
说明 RandomNum 函数返回指定间隔内的随机数。
函数签名 Int RandomNum(start, end)
输入
  • start:一个数字,用于标识要生成的随机值的下限。
  • end:一个数字,用于标识要生成的随机值的上限。
操作 生成不小于 start 且不大于 end 的随机数。 例如: Random(0,999) 可能返回 100
Output 由 start 和 end 界定的范围内的随机数。

EscapeDNComponent
说明 MIISUtils 提供的 EscapeDNComponent 方法用于执行此操作。 此方法根据所使用的管理代理类型 (MA) 处理输入字符串。
函数签名 String EscapeDNComponent(string)
输入 string:用于处理可分辨名称的字符串。 此字符串不得包含转义字符。
操作 不同的 MA 需要不同的可分辨名称格式。 此方法 基于以下 MA 类型处理输入字符串:
  • LDAP 可分辨名称:此 MA 类型的示例包括 Active Directory 域 Services、Sun Directory Server (之前为 iPlanet Directory Server) 和 Microsoft Exchange Server。
    • 给定部分的值部分的任何无效 XML 字符都是十六进制编码的。
    • 任何非法 (在给定部件的名称部分) 无效的 XML 字符都会生成错误。
    • 转义字符包括逗号 (、) 、等于 (=) 、 (+) 、小于 () 、大于 < (>) 、数字 (#) 、分号 (;) 、反引号 () 和双引号 (") " 。
    • 如果字符串中的最后 一个字符 是空格 ( ) ,则对空格进行转义。
    • 删除部件名称周围的任何多余的前导空格或尾随空格。
    • 对于 XML MA,如果有多个部件,则这些部件按字母顺序排序。
    • 如果指定了多个部分,复合可分辨名称字符串是由加号分隔的各个字符串的串联 (+) 符号。
    • 如果输入 字符串 不是格式正确的 LDAP 样式可分辨名称字符串,则会生成错误。
  • 分层非 LDAP:此类 MA 的示例是 Microsoft Lotus Notes。
    • 此 MA 类型不支持多部分组件。
    • 如果将多个字符串传递到 EscapeDNComponent ,则会引发 EscapeDNComponent
    • 如果输入 字符串 中的任何字符是无效的 XML 字符,则会引发 ArgumentException
    • 输入 字符串 中的所有逗号 (、) 和反 ) (斜杠都将进行转义。
    • 如果 字符串 中的最后一个字符是空格 ( ) ,则该空格将被转义。
  • 外部:此 MA 类型的示例包括不含 LDAP 可分辨名称的数据库或 XML。
    • 如果任何部分为二进制或包含无效的 XML 字符,则该部分将存储为原始数据的十六进制编码版本,并在字符串前面加上 ( # ) 字符作为前缀。 例如,如果某个部分 AxC (其中 x 表示非法的 XML 字符(如 0x10) ),则该部分将编码为 #410010004300 。 否则,这些字符的所有实例都将被转义:反斜杠 () 、逗号 (、) 和 (+) 以及数字 ( # ) 。
    • 如果给定的部分字符串中的最后一个字符是空格 ( ) ,则该空间将被转义。
    • 如果指定了多个部分,复合可分辨名称字符串是将所有字符串串联,并用加号隔开。
Output 包含有效域名的字符串。

注意

可分辨名称的验证不如 LDAP 规范中定义的语法严格。 EscapeDNComponent(String[]) 允许部分名称包含一个或多个字符 "a-z"、"a"、"z"、"0"-"9"、"-" 和 "." 的任意组合。

不能使用此方法指定二进制部分。 不过,如果可分辨名称是通过定位属性构成,并且其中一个定位属性是二进制类型,那么就可以在 CommitNewConnector 中指定二进制部分。


Null
说明 Null 函数用于指定 MA 没有要提供的属性,并且该属性优先级应继续下一 MA。
函数签名 String Null
输入 无。
操作 返回 Null。 例如: IIF(Eq(domain), "unknown", Null()) 返回 Null
Output 输出是 Null。

逻辑函数

逻辑函数用于根据系统求出的条件执行操作。

IIF
说明 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,则返回该值。
操作 如果 条件 的计算结果为 true,则函数返回 valueIfTrue。 否则,函数将返回 valueIfFalse。 例如: IIF(Eq(EmployeeType,"Intern"),"t-" + Alias, Alias) 如果用户是拘留,则返回添加到别名开头的用户的别名。 否则,函数将按原样返回用户的别名。
Output 如果条件为 true,则输出为 valueIfTrue ; 如果条件为 false,则为 valueIfFalse

在 Microsoft Identity Manager (MIM) 2016 中,可以先使用函数修改属性值,然后再将属性值流式传输到函数活动或声明性预配中的目标。 本文档旨在概览可用函数,并介绍如何使用这些函数。

配置属性流映射是配置同步规则时的基本任务。 属性流映射的最简单形式是直接映射。 顾名思义,直接映射需要使用源属性的值,并将它应用于已配置的目标属性。 有时,需要先修改现有属性值或计算新属性值,然后系统才能将属性值应用于目标。

函数是一种内置方法,用于定义在为目标生成属性值时需要同步引擎应用的修改类型。

MIM 函数分为以下几类:

  • 数据操作:对字符串执行各种操作操作。

  • 数据检索:从属性值中提取数据。

  • 数据生成:生成值。

  • 逻辑:根据条件执行操作。

下面各部分详细介绍了每种函数。

数据操作函数

数据操作函数用于对字符串执行各种操作。

Concatenate
说明 串连函数连接两个或多个字符串。
函数签名 string1 + string2...
输入 两个或多个字符串。
操作 将所有输入字符串参数相互连接。
Output 一个字符串。

UpperCase
说明 UpperCase 函数将字符串中的所有字符都转换为大写。
函数签名 String UpperCase(string)
输入 一个字符串。
操作 将输入参数的所有小写字符都转换为大写字符。 例如: UpperCase("test") 中的结果 "TEST"
Output 一个字符串。

LowerCase
说明 LowerCase 函数将字符串中的所有字符都转换为小写。
函数签名 String LowerCase(string)
输入 一个字符串。
操作 将输入参数的所有大写字符都转换为小写字符。 例如: LowerCase("TeSt") 中的结果 "test"
Output 一个字符串。

ProperCase
说明 ProperCase 函数将字符串中每个空格分隔的单词的第一个字符转换为大写形式。 所有其他字符都转换为小写。
函数签名 String ProperCase(string)
输入 一个字符串。
操作 输入参数中每个空格分隔的单词的第一个字符转换为大写。 将所有大写字符转换为小写字符。 如果输入参数中的字词以非字母字符开头,那么此字词的首字符不会转换为大写。 例如:
  • ProperCase("TEsT") 结果为 "Test"
  • ProperCase("britta simon") 结果为 "Britta Simon"
  • ProperCase(" TEsT") 结果为 " Test"
  • ProperCase("\$TEsT") 结果为 "\$Test"
Output 一个字符串。

LTrim
说明 LTrim 函数删除字符串中的前导空格。
函数签名 String LTrim(string)
输入 一个字符串。
操作 将删除输入参数中包含的前导空白字符。 例如: LTrim(" Test ") 中的结果 "Test "
Output 一个字符串。

RTrim
说明 RTrim 函数从字符串中删除尾随空格。
函数签名 String RTrim(string)
输入 一个字符串。
操作 将删除输入参数中包含的尾随空白字符。 例如: RTrim(" Test ") 中的结果 " Test"
Output 一个字符串。

Trim
说明 Trim 函数从字符串中删除前导空格和尾随空格。
函数签名 String Trim(string)
输入 一个字符串。
操作 删除字符串中包含的前导和尾随空白字符。 例如: Trim(" Test ") 中的结果 "Test"
Output 一个字符串。

RightPad
说明 RightPad 函数使用提供的填充字符,在字符串右侧将字符串填充到指定长度。
函数签名 String RightPad(string, length, padCharacter)
输入
  • string:要填充的字符串。
  • length:表示所需字符串长度的整数。
  • padCharacter:一个字符串,其中包含用作填充字符的单个字符。
操作 如果 字符串 的长度小于 Length,则 padCharacter 会重复追加到 字符串 的末尾,直到 字符串 的长度等于 length。 例如:
  • RightPad("User", 10, "0") 结果为 "User000000"
  • RightPad(RandomNum(1,10), 5, "0") 可能导致 "9000"
Output 如果 字符串 的长度大于或等于 length,则返回与 string 相同的字符串。 如果 字符串 的长度小于 length,则返回所需长度的新字符串。 新字符串包含用padCharacter填充的字符串。 如果 string 为 null,则该函数返回空字符串。

注意padCharacter 可以是空格字符,但不能为 null 值。 如果 字符串 的长度等于或大于 length,则返回不变的 字符串

LeftPad
说明 LeftPad 函数使用提供的填充字符,在字符串左侧将字符串填充到指定长度。
函数签名 String LeftPad(string, length, padCharacter)
输入
  • string:要填充的字符串。
  • length:表示所需字符串长度的整数。
  • padCharacter:一个字符串,其中包含用作填充字符的单个字符。
操作 如果 字符串 的长度小于 Length,则 padCharacter 会重复追加到 字符串 的开头,直到 字符串 的长度等于 length。 例如:
  • RightPad("User", 10, "0") 结果为 "000000User"
  • RightPad(RandomNum(1,10), 5, "0") 可能导致 "0009"
Output 如果 字符串 的长度大于或等于 length,则返回与 string 相同的字符串。 如果 字符串 的长度小于 length,则返回所需长度的新字符串。 新字符串包含用padCharacter填充的字符串。 如果 string 为 null,则该函数返回空字符串。

注意padCharacter 可以是空格字符,但不能为 null 值。 如果 字符串 的长度等于或大于 length,则返回不变的 字符串