Microsoft Identity Manager 2016 的函数参考
在 Microsoft Identity Manager (MIM) 2016 中,可以先使用函数修改属性值,然后再将属性值流式传输到函数活动或声明性预配中的目标。 本文档旨在概览可用函数,并介绍如何使用这些函数。
配置属性流映射是配置同步规则时的基本任务。 属性流映射的最简单形式是直接映射。 顾名思义,直接映射需要使用源属性的值,并将它应用于已配置的目标属性。 有时,需要先修改现有属性值或计算新属性值,然后系统才能将属性值应用于目标。
函数是一种内置方法,用于定义在为目标生成属性值时需要同步引擎应用的修改类型。
MIM 函数分为以下类别:
数据操作:对字符串执行各种操作。
数据检索:从属性值中提取数据。
数据生成:生成值。
逻辑:根据条件执行操作。
下面各部分详细介绍了每种函数。
数据操作函数
数据操作函数用于对字符串执行各种操作。
Concatenate |
详细信息 |
说明 |
Concatenate 函数连接两个或多个字符串。 |
函数签名 |
string1 + string2... |
输入 |
两个或多个字符串。 |
Operations |
将所有输入字符串参数相互连接。 |
输出 |
一个字符串。 |
UpperCase |
详细信息 |
说明 |
UpperCase 函数将字符串中的所有字符都转换为大写。 |
函数签名 |
String UpperCase(string) |
输入 |
一个字符串。 |
Operations |
将输入参数的所有小写字符都转换为大写字符。 例如: UpperCase("test") 结果为 "TEST" 。 |
输出 |
一个字符串。 |
LowerCase |
详细信息 |
说明 |
LowerCase 函数将字符串中的所有字符都转换为小写。 |
函数签名 |
String LowerCase(string) |
输入 |
一个字符串。 |
Operations |
将输入参数的所有大写字符都转换为小写字符。 例如: LowerCase("TeSt") 结果为 "test" 。 |
输出 |
一个字符串。 |
ProperCase |
详细信息 |
说明 |
ProperCase 函数将字符串中每个空格分隔的单词的第一个字符转换为大写。 所有其他字符将转换为小写。 |
函数签名 |
String ProperCase(string) |
输入 |
一个字符串。 |
Operations |
输入参数中每个空格分隔的单词的第一个字符将转换为大写。 所有大写字符都转换为小写字符。 如果输入参数中的字词以非字母字符开头,那么此字词的首字符不会转换为大写。 例如:ProperCase("TEsT") 结果为 "Test" 。ProperCase("britta simon") 结果为 "Britta Simon" 。ProperCase(" TEsT") 结果为 " Test" 。ProperCase("\$TEsT") 结果为 "\$Test" 。
|
输出 |
一个字符串。 |
LTrim |
详细信息 |
说明 |
LTrim 函数从字符串中删除前导空格。 |
函数签名 |
String LTrim(string) |
输入 |
一个字符串。 |
Operations |
将删除输入参数中包含的前导空格字符。 例如: LTrim(" Test ") 结果为 "Test " 。 |
输出 |
一个字符串。 |
RTrim |
详细信息 |
说明 |
RTrim 函数从字符串中删除尾随空格。 |
函数签名 |
String RTrim(string) |
输入 |
一个字符串。 |
Operations |
将删除输入参数中包含的尾随空格字符。 例如: RTrim(" Test ") 结果为 " Test" 。 |
输出 |
一个字符串。 |
Trim |
详细信息 |
说明 |
Trim 函数从字符串中删除前导空格和尾随空格。 |
函数签名 |
String Trim(string) |
输入 |
一个字符串。 |
Operations |
删除字符串中包含的前导和尾随空格字符。 例如: Trim(" Test ") 结果为 "Test" 。 |
输出 |
一个字符串。 |
|
|
RightPad |
详细信息 |
说明 |
RightPad 函数使用提供的填充字符,在字符串右侧将字符串填充到指定长度。 |
函数签名 |
String RightPad(string, length, padCharacter) |
输入 |
- string:要填充的字符串。
- length:表示字符串所需长度的整数。
- padCharacter:由要用作填充字符的单个字符组成的字符串。
|
Operations |
如果 字符串 的长度小于 长度,则将 padCharacter 重复追加到 字符串 的末尾,直到 字符串 长度等于 长度。 例如:RightPad("User", 10, "0") 结果为 "User000000" 。RightPad(RandomNum(1,10), 5, "0") "9000" 可能会导致 。
|
输出 |
如果 字符串 的长度大于或等于 长度,则返回与 字符串相同的字符串 。 如果 字符串 的长度小于 长度,则返回所需长度的新字符串。 新字符串包含用 padCharacter 填充的字符串。 如果 string 为 null,则该函数将返回一个空字符串。
注意: padCharacter 可以是空格字符,但不能是 null 值。 如果 字符串 的长度等于或大于 长度,则 返回字符串 不变。 |
LeftPad |
详细信息 |
说明 |
LeftPad 函数使用提供的填充字符,在字符串左侧将字符串填充到指定长度。 |
函数签名 |
String LeftPad(string, length, padCharacter) |
输入 |
- string:要填充的字符串。
- length:表示字符串所需长度的整数。
- padCharacter:由要用作填充字符的单个字符组成的字符串。
|
Operations |
如果 字符串 的长度小于 长度,则将 padCharacter 重复追加到 字符串 的开头,直到 字符串 长度等于 长度。 例如:RightPad("User", 10, "0") 结果为 "000000User" 。RightPad(RandomNum(1,10), 5, "0") "0009" 可能会导致 。
|
输出 |
如果 字符串 的长度大于或等于 长度,则返回与 字符串相同的字符串 。 如果 字符串 的长度小于 长度,则返回所需长度的新字符串。 新字符串包含用 padCharacter 填充的字符串。 如果 string 为 null,则该函数将返回一个空字符串。
注意: padCharacter 可以是空格字符,但不能是 null 值。 如果 字符串 的长度等于或大于 长度,则 返回字符串 不变。 |
BitOr |
详细信息 |
说明 |
BitOr 函数将标志上的指定位设置为 1。 |
函数签名 |
Int BitOr(mask, flag) |
输入 |
- mask:一个十六进制值,指定要在 标志上设置的位。
- 标志:要修改特定位的十六进制值。
|
Operations |
此函数将两个参数转换为二进制表示形式,并进行比较:- 如果 掩码 和 标志 中的一个或两个对应位均为 1,则将位设置为 1。
- 如果两个对应位都为 0,则将位设置为 0。
- 在所有情况下都返回 1,但两个参数的对应位均为 0 的情况除外。
- 生成的位模式是两个操作数中的任何一个 (1 或 true) 位。
- 如果多个位的掩码值为 1,则可以设置多个标志位。
|
输出 |
标志 的新版本 ,掩 码 中指定的位设置为 1。 |
BitAnd |
详细信息 |
说明 |
BitAnd 函数将标志上的指定位设置为 0。 |
函数签名 |
Int BitOr(mask, flag) |
输入 |
- mask:一个十六进制值,指定要修改 标志的位。
- 标志:要修改特定位的十六进制值。
|
Operations |
此函数将两个参数转换为二进制表示形式,并进行比较:- 如果 掩码 和 标志 中的一个或两个对应位均为 0,则将位设置为 0。
- 如果两个对应位都为 1,则将位设置为 1。
- 在所有情况下都返回 0,但两个参数的对应位均为 1 的情况除外。
- 如果多个位的掩码值为 0,则可以将多个标志位设置为 0。
|
输出 |
将 mask 中指定的位设置为 0 的新版标志。 |
DateTimeFormat |
详细信息 |
说明 |
DateTimeFormat 函数用于将字符串形式的日期时间设置为指定格式。 |
函数签名 |
String DateTimeFormat(dateTime, format) |
输入 |
- dateTime:表示要设置格式的 DateTime 的字符串。
- format:表示要转换为的格式的字符串。
注意:有关用于创建用户定义格式的字符,请参阅 用户定义的日期/时间格式。 |
Operations |
格式指定的 格式 字符串将应用于 dateTime 字符串中的 DateTime 。 格式中指定的字符串必须是有效的 DateTime 格式。 否则,将会返回错误,指明 format 指定的日期时间格式无效。 例如: DateTime("12/25/2007", "yyyy-MM-dd") 结果为 "2007-12-25" 。 |
输出 |
将 格式 应用于 dateTime 生成的字符串。 |
ConvertSidToString |
详细信息 |
说明 |
ConvertSidToString 将包含安全标识符的字节数组转换为字符串。 |
函数签名 |
String ConvertSidToString(ObjectSID) |
输入 |
ObjectSID:包含 SID) (安全标识符的字节数组。 |
Operations |
将指定的二进制 SID 转换为字符串。 |
输出 |
字符串表示形式的 SID。 |
ConvertStringToGuid |
详细信息 |
说明 |
ConvertStringToGuid 函数将字符串表示形式的 GUID 转换为二进制表示形式的 GUID。 |
函数签名 |
Byte[] ConvertStringToGuid(stringGuid) |
输入 |
stringGuid:采用 模式 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 格式的字符串,其中 GUID 的值表示为一系列十六进制数字,以 8、4、4、4 和 12 位数字分组并用连字符分隔。 返回值的一个示例是 382c74c3-721d-4f34-80e557657b6cbc27 。 |
Operations |
stringGuid 将转换为其二进制表示形式。 如果字符串不是有效 GUID 的表示形式,则函数会拒绝参数,并显示错误“ConvertStringToGuid 函数的参数必须是表示有效 Guid 的字符串”。 |
输出 |
GUID 的二进制表示形式。 |
ReplaceString |
详细信息 |
说明 |
ReplaceString 函数在一个字符串出现的所有地方将它全部替换为另一个字符串。 |
函数签名 |
String ReplaceString(string, OldValue, NewValue) |
输入 |
- string:要替换值的字符串。
- OldValue:要搜索和替换的字符串。
- NewValue:要替换到的字符串。
|
Operations |
字符串中所有出现的 OldValue 都会替换为 NewValue。 函数必须能够处理新行、\r. 回车符和 \t. 选项卡\n的特殊字符。例如: ReplaceString("One\n\rMicrosoft\n\r\Way","\n\r"," ") 返回 "One Microsoft Way" 。 |
输出 |
出现的所有 OldValue 全部替换为 NewValue 的字符串。 |
数据检索函数
数据检索函数用于执行操作,以便从字符串中检索相应字符。
Word |
详细信息 |
说明 |
基于描述要使用的分隔符与要返回的单词数的参数,Word 函数返回字符串中包含的单词。 |
函数签名 |
String Word(string, number, delimiters) |
输入 |
- string:要从中返回单词的字符串。
- number:一个数字,标识应返回哪个单词号。
- 分隔符:表示应用于标识单词的分隔符的字符串。
|
Operations |
字符串中由分隔符中的字符之一分隔的每个字符串都标识为一个单词。 如果 string 为 null,则该函数将返回一个空字符串。 返回在 number 中指定的位置找到的单词。 如果 数字< 1,则函数返回一个空字符串。 例如:Word("Test;of%function;", 3, ";$&%") 返回 "function" 。Word("Test;;Function" , 2 , ";") 返回 "" (空字符串) 。Word("Test;of%function;", 0, ";$&%") 返回 "" (空字符串) 。
|
输出 |
包含用户指定位置处的字词的字符串。 如果 string 包含的单词数少于字 数 ,或者 字符串 不包含 分隔符 标识的任何单词,则返回空字符串。 |
Left |
详细信息 |
说明 |
Left 函数从字符串的左 (开始返回指定数量的字符) 。 |
函数签名 |
String Left(string, numChars) |
输入 |
- string:要从中返回字符的字符串。
- numChars:一个数字,标识要从字符串开头返回的字符数。
|
Operations |
从字符串的第一个位置返回 numChars 字符。 例如: Left("Britta Simon", 3) 返回 "Bri" 。 |
输出 |
包含字符串中第一个 numChars 字符的 字符串。 如果 numChars = 0,则函数返回一个空字符串。 如果 numChars< 0,则函数返回输入字符串。 如果 string 为 null,则该函数将返回一个空字符串。 |
Right |
详细信息 |
说明 |
Right 函数从字符串右侧(末尾)起返回指定的字符数。 |
函数签名 |
String Right(string, numChars) |
输入 |
- string:要从中返回字符的字符串。
- numChars:一个数字,标识要从字符串末尾返回的字符数。
|
Operations |
从字符串末尾返回 numChars 字符。 例如: Right("Britta Simon", 3) 返回 "mon" 。 |
输出 |
包含字符串中最后 一个 numChars 字符的 字符串。 如果 numChars = 0,则函数返回一个空字符串。 如果 numChars< 0,则函数返回输入字符串。 如果 string 为 null,则该函数将返回一个空字符串。 如果 string 包含的字符数少于 numChars 中指定的数字,则返回 string 。 |
Mid |
详细信息 |
说明 |
Mid 函数从字符串指定位置起返回指定的字符数。 |
函数签名 |
String Mid(string, pos, numChars) |
输入 |
- string:要从中返回字符的字符串。
- pos:标识字符串中用于返回字符的起始位置的数字。
- numChars:一个数字,标识要从字符串中某个位置返回的字符数。
|
Operations |
返回从字符串中位置 pos 开始的 numChars 字符。 例如: Mid("Britta Simon", 3, 5) 返回 "itta " 。 |
输出 |
包含字符串中位置 pos 中的 numChars 字符的字符串。 如果 numChars = 0,则函数返回一个空字符串。 如果 numChars< 0,则函数返回一个空字符串。 如果 pos>为字符串的长度,则函数将返回一个输入字符串。 如果 pos<= 0,则函数返回输入字符串。 如果 string 为 null,则该函数将返回一个空字符串。 如果位置 pos 中的字符串中没有剩余的 numChar 字符,则返回尽可能多的字符。 |
数据生成函数
数据生成函数用于生成特定数据类型的值。
CRLF |
详细信息 |
说明 |
CRLF 函数生成回车符/换行符。 使用此函数添加新行。 |
函数签名 |
String CRLF |
输入 |
无。 |
Operations |
返回 CRLF。 例如:
AddressLine1 + CRLF() + AddressLine2 结果在 AddressLine1
AddressLine2 . |
输出 |
输出是 CRLF。 |
RandomNum |
详细信息 |
说明 |
RandomNum 函数返回指定间隔内的随机数。 |
函数签名 |
Int RandomNum(start, end) |
输入 |
- start:一个数字,标识要生成的随机值的下限。
- end:一个数字,标识要生成的随机值的上限。
|
Operations |
生成不小于 start 且不大于 end 的随机数。 例如: Random(0,999) 可能返回 100 。 |
输出 |
由 start 和 end 界定的范围内的随机数。 |
EscapeDNComponent |
详细信息 |
说明 |
MIISUtils 提供的 EscapeDNComponent 方法用于执行此操作。 此方法根据正在使用的管理代理类型 (MA) 处理输入字符串。 |
函数签名 |
String EscapeDNComponent(string) |
输入 |
string:用于处理可分辨名称的字符串。 此字符串不得包含转义字符。 |
Operations |
不同的 MA 需要不同的可分辨名称格式。 此方法基于以下 MA 类型处理输入 字符串 :- LDAP 可分辨名称:此 MA 类型的示例包括 Active Directory 域服务、Sun Directory Server (以前是 iPlanet Directory Server) ,以及 Microsoft Exchange Server。
- 给定部分的值部分中的任何无效 XML 字符均采用十六进制编码。
- (包括给定部件名称部分中) 无效 XML 字符在内的任何非法字符都会生成错误。
- 转义字符包括逗号 (,) , 等于 (=) ,加上 (+) 、小于 (<) 、大于 (>) 、数字 (#) 、分号 (;) 、反斜杠 () 和双引号 (“) 。
- 如果 字符串 中的最后一个字符是空格 ( ) ,则会转义该空格。
- 删除部件名称周围的任何无关的前导或尾随空格。
- 对于 XML MA,如果有多个部分,则按字母顺序排列这些部分。
- 如果指定了多个部分,复合可分辨名称字符串是单个字符串的串联,由加 (+) 符号分隔。
- 如果输入 字符串 不是格式正确的 LDAP 样式的可分辨名称字符串,则会生成错误。
- 分层非 LDAP:此类 MA 的一个示例是 Microsoft Lotus Notes。
- 此 MA 类型不支持多部分组件。
- 如果将多个字符串传递给
EscapeDNComponent ,则会引发 ArgumentException 。 - 如果输入 字符串 中的任何字符是无效的 XML 字符,则会引发 ArgumentException 。
- 对输入 字符串 中 (、) 和反斜杠 (/) 的所有逗号进行转义。
- 如果 字符串 中的最后一个字符是空格 ( ) ,则会转义该空格。
- 外在:此 MA 类型的示例包括没有 LDAP 可分辨名称的数据库或 XML。
- 如果任何部分是二进制或包含无效的 XML 字符,则该部分将存储为原始数据的十六进制编码版本,其中数字 (#) 字符前缀为字符串的前面。 例如,如果某个部件 (
AxC 其中 x 表示非法 XML 字符(如 0x10 ) ),则该部件将编码为 #410010004300 。 否则,将转义这些字符的所有实例:反斜杠 () 、逗号 (,) 加上 (+) 和数字 (#) 。 - 如果给定部件字符串中的最后一个字符是空格 ( ) ,则会转义该空格。
- 如果指定了多个部分,复合可分辨名称字符串是将所有字符串串联,并用加号隔开。
|
输出 |
包含有效域名的字符串。 |
注意
可分辨名称的验证不如 LDAP 规范中定义的语法严格。 EscapeDNComponent(String[])
允许部件名称包含一个或多个字符“a”-“z”、“A”-“Z”、“0”-'9“、”-“和”.“的任意组合。
无法使用此方法指定二进制部件。 不过,如果可分辨名称是通过定位属性构成,并且其中一个定位属性是二进制类型,那么就可以在 CommitNewConnector 中指定二进制部分。
Null |
详细信息 |
说明 |
Null 函数用于指定 MA 没有要贡献的属性,并且该属性优先级应在下一个 MA 中继续。 |
函数签名 |
String Null |
输入 |
无。 |
Operations |
返回 Null。 例如: IIF(Eq(domain), "unknown", Null()) 返回 Null 。 |
输出 |
输出是 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 时返回的值。
|
Operations |
如果 condition 的计算结果为 true,则函数返回 valueIfTrue。 否则,函数返回 valueIfFalse。 例如: IIF(Eq(EmployeeType,"Intern"),"t-" + Alias, Alias) 返回用户的别名,如果用户是实习生,则返回将“t-”添加到别名开头的用户的别名。 否则,该函数将按原样返回用户的别名。 |
输出 |
如果条件为 true,则输出为 valueIfTrue ;如果条件为 false,则输出为 valueIfFalse 。 |