Microsoft Identity Manager (MIM) 2016 では、関数を使用すると、関数アクティビティまたは宣言型プロビジョニングでターゲットに属性値をフローする前に属性値を変更できます。 このドキュメントの目的は、使用可能な関数の概要と、それらを使用する方法の説明を提供することです。
属性フロー マッピングの構成は、同期規則を構成するときの基本タスクです。 属性フロー マッピングの最も簡単な形式は、直接マッピングです。 名前で示されているように、直接マッピングはソース属性の値を受け取り、構成された宛先属性に適用します。 既存の属性値を変更するか、新しい属性値を計算してから変換先に適用する必要がある場合があります。
関数は、同期エンジンが変換先の属性値を生成するときに適用する必要がある変更の種類を定義するために使用される組み込みメソッドです。
MIM 関数は、次のカテゴリに分散されます。
次のセクションでは、各カテゴリの関数の詳細について説明します。
データ操作関数
データ操作関数は、文字列に対してさまざまな操作操作を実行するために使用されます。
| Concatenate |
ディテール |
| 説明 |
Concatenate 関数は、2 つ以上の文字列を連結します。 |
| 関数シグネチャ |
string1 + string2... |
| 入力 |
2 つ以上の文字列。 |
| オペレーション |
すべての入力文字列パラメーターは、相互に連結されます。 |
| アウトプット |
1 つの文字列。 |
| 大文字 |
ディテール |
| 説明 |
UpperCase 関数は、文字列内のすべての文字を大文字に変換します。 |
| 関数シグネチャ |
String UpperCase(string) |
| 入力 |
1 つの文字列。 |
| オペレーション |
入力パラメーターのすべての小文字は、大文字に変換されます。 たとえば、 UpperCase("test") 結果は "TEST"になります。 |
| アウトプット |
1 つの文字列。 |
| 小文字 |
ディテール |
| 説明 |
LowerCase 関数は、文字列内のすべての文字を小文字に変換します。 |
| 関数シグネチャ |
String LowerCase(string) |
| 入力 |
1 つの文字列。 |
| オペレーション |
入力パラメーターのすべての大文字は小文字に変換されます。 たとえば、 LowerCase("TeSt") 結果は "test"になります。 |
| アウトプット |
1 つの文字列。 |
| ProperCase |
ディテール |
| 説明 |
ProperCase 関数は、文字列内の各スペース区切り単語の最初の文字を大文字に変換します。 その他の文字はすべて小文字に変換されます。 |
| 関数シグネチャ |
String ProperCase(string) |
| 入力 |
1 つの文字列。 |
| オペレーション |
入力パラメーター内のすべてのスペース区切り単語の最初の文字は、大文字に変換されます。 大文字はすべて小文字に変換されます。 入力パラメーター内の単語がアルファベット以外の文字で始まる場合、その単語の最初の文字は大文字に変換されません。 例えば次が挙げられます。-
ProperCase("TEsT") 結果は "Test"になります。 -
ProperCase("britta simon") 結果は "Britta Simon"になります。 -
ProperCase(" TEsT") 結果は " Test"になります。 -
ProperCase("\$TEsT") 結果は "\$Test"になります。
|
| アウトプット |
1 つの文字列。 |
| LTrim |
ディテール |
| 説明 |
LTrim 関数は、文字列から先頭の空白を削除します。 |
| 関数シグネチャ |
String LTrim(string) |
| 入力 |
1 つの文字列。 |
| オペレーション |
入力パラメーターに含まれる先頭の空白文字が削除されます。 たとえば、 LTrim(" Test ") 結果は "Test "になります。 |
| アウトプット |
1 つの文字列。 |
| RTrim |
ディテール |
| 説明 |
RTrim 関数は、文字列から末尾の空白を削除します。 |
| 関数シグネチャ |
String RTrim(string) |
| 入力 |
1 つの文字列。 |
| オペレーション |
入力パラメーターに含まれる末尾の空白文字は削除されます。 たとえば、 RTrim(" Test ") 結果は " Test"になります。 |
| アウトプット |
1 つの文字列。 |
| 刈る |
ディテール |
| 説明 |
Trim 関数は、文字列から先頭と末尾の空白を削除します。 |
| 関数シグネチャ |
String Trim(string) |
| 入力 |
1 つの文字列。 |
| オペレーション |
文字列に含まれる先頭と末尾の空白文字が削除されます。 たとえば、 Trim(" Test ") 結果は "Test"になります。 |
| アウトプット |
1 つの文字列。 |
|
|
| RightPad |
ディテール |
| 説明 |
RightPad 関数は、指定された埋め込み文字を使用して、文字列を指定された長さに右パッドします。 |
| 関数シグネチャ |
String RightPad(string, length, padCharacter) |
| 入力 |
-
string: 埋め込む文字列。
-
length: 文字列の目的の長さを表す整数。
-
padCharacter: パッド文字として使用される 1 つの文字で構成される文字列。
|
| オペレーション |
文字列の長さが長さより短い場合、文字列の長さが長さになるまで padCharacter が文字列の末尾に繰り返し追加されます。 例えば次が挙げられます。-
RightPad("User", 10, "0") 結果は "User000000"になります。 -
RightPad(RandomNum(1,10), 5, "0") は、 "9000"になる可能性があります。
|
| アウトプット |
文字列の長さが長さ以上の場合は、文字列と同じ文字列が返されます。
文字列の長さが長さより短い場合は、目的の長さの新しい文字列が返されます。 新しい文字列には、padCharacter で埋め込まれた文字列が含まれています。
文字列が null の場合、関数は空の文字列を返します。
注: padCharacter にはスペース文字を使用できますが、null 値にすることはできません。
文字列の長さが長さ以上の場合、文字列は変更されずに返されます。 |
| LeftPad |
ディテール |
| 説明 |
LeftPad 関数は、指定された埋め込み文字を使用して、文字列を指定された長さに左パッドします。 |
| 関数シグネチャ |
String LeftPad(string, length, padCharacter) |
| 入力 |
-
string: 埋め込む文字列。
-
length: 文字列の目的の長さを表す整数。
-
padCharacter: パッド文字として使用される 1 つの文字で構成される文字列。
|
| オペレーション |
文字列の長さが長さより短い場合、文字列の長さが長さになるまで padCharacter が文字列の先頭に繰り返し追加されます。 例えば次が挙げられます。-
RightPad("User", 10, "0") 結果は "000000User"になります。 -
RightPad(RandomNum(1,10), 5, "0") は、 "0009"になる可能性があります。
|
| アウトプット |
文字列の長さが長さ以上の場合は、文字列と同じ文字列が返されます。
文字列の長さが長さより短い場合は、目的の長さの新しい文字列が返されます。 新しい文字列には、padCharacter で埋め込まれた文字列が含まれています。
文字列が null の場合、関数は空の文字列を返します。
注: padCharacter にはスペース文字を使用できますが、null 値にすることはできません。
文字列の長さが長さ以上の場合、文字列は変更されずに返されます。 |
| BitOr |
ディテール |
| 説明 |
BitOr 関数は、フラグの指定されたビットを 1 に設定します。 |
| 関数シグネチャ |
Int BitOr(mask, flag) |
| 入力 |
-
mask: フラグに設定するビットを指定する 16 進値。
-
フラグ: 特定のビットを変更する 16 進値。
|
| オペレーション |
この関数は、両方のパラメーターをバイナリ表現に変換し、それらを比較します。-
マスクおよびフラグの対応するビットの一方または両方が 1 の場合、ビットを 1 に設定します。
- 対応するビットの両方が 0 の場合、ビットを 0 に設定します。
- 両方のパラメーターの対応するビットが 0 である場合を除き、すべてのケースで 1 を返します。
- 結果のビット パターンは、2 つのオペランドの "set" (1 または true) ビットです。
- 複数のビットがマスクの値 1 を持つ場合は、複数のフラグ ビットを設定できます。
|
| アウトプット |
マスクで指定されたビットが 1 に設定された新しいバージョンのフラグ。 |
| BitAnd |
ディテール |
| 説明 |
BitAnd 関数は、フラグの指定されたビットを 0 に設定します。 |
| 関数シグネチャ |
Int BitOr(mask, flag) |
| 入力 |
-
mask: フラグで変更するビットを指定する 16 進値。
-
フラグ: 特定のビットを変更する 16 進値。
|
| オペレーション |
この関数は、両方のパラメーターをバイナリ表現に変換し、それらを比較します。-
マスクおよびフラグの対応するビットの一方または両方が 0 の場合、ビットを 0 に設定します。
- 対応するビットの両方が 1 の場合、ビットを 1 に設定します。
- 両方のパラメーターの対応するビットが 1 である場合を除き、すべてのケースで 0 を返します。
- マスクの値が 0 の場合、複数のフラグ ビットを 0 に設定できます。
|
| アウトプット |
マスクで指定されたビットが 0 に設定された新しいバージョンのフラグ。 |
| DateTimeFormat |
ディテール |
| 説明 |
DateTimeFormat 関数は、文字列形式の DateTime を指定された形式に書式設定するために使用されます。 |
| 関数シグネチャ |
String DateTimeFormat(dateTime, format) |
| 入力 |
-
dateTime: 書式設定する DateTime を表す文字列。
-
format: 変換する形式を表す文字列。
注: ユーザー定義形式の作成に使用できる文字については、「 ユーザー定義の日付/時刻形式」を参照してください。 |
| オペレーション |
形式で指定された書式指定文字列は、dateTime 文字列の DateTime に適用されます。
形式で指定する文字列は、有効な DateTime 形式である必要があります。 そうでない場合は、形式が有効な DateTime 形式ではないことを示すエラーが返されます。 たとえば、 DateTime("12/25/2007", "yyyy-MM-dd") 結果は "2007-12-25"になります。 |
| アウトプット |
dateTime に書式を適用した結果の文字列。 |
| ConvertSidToString |
ディテール |
| 説明 |
ConvertSidToString は、セキュリティ識別子を含むバイト配列を文字列に変換します。 |
| 関数シグネチャ |
String ConvertSidToString(ObjectSID) |
| 入力 |
ObjectSID: セキュリティ識別子 (SID) を含むバイト配列。 |
| オペレーション |
指定したバイナリ SID が文字列に変換されます。 |
| アウトプット |
SID の文字列形式。 |
| ConvertStringToGuid |
ディテール |
| 説明 |
ConvertStringToGuid 関数は、GUID の文字列表現を GUID のバイナリ表現に変換します。 |
| 関数シグネチャ |
Byte[] ConvertStringToGuid(stringGuid) |
| 入力 |
stringGuid: パターン xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxで書式設定された文字列。GUID の値は、8、4、4、4、12 桁のグループで、ハイフンで区切られた一連の 16 進数として表されます。 戻り値の例は 382c74c3-721d-4f34-80e557657b6cbc27。 |
| オペレーション |
stringGuid はバイナリ表現に変換されます。 文字列が有効な GUID の表現でない場合、関数は "ConvertStringToGuid 関数のパラメーターは、有効な Guid を表す文字列である必要があります" というエラーで引数を拒否します。 |
| アウトプット |
GUID のバイナリ表現。 |
| ReplaceString |
ディテール |
| 説明 |
ReplaceString 関数は、文字列のすべての出現箇所を別の文字列に置き換えます。 |
| 関数シグネチャ |
String ReplaceString(string, OldValue, NewValue) |
| 入力 |
-
string: 値を置き換える文字列。
-
OldValue: 検索および置換する文字列。
-
NewValue: 置換する文字列。
|
| オペレーション |
文字列内のすべての OldValue が NewValue に置き換えられます。 この関数は、改行、 \r. 復帰、 \ t タブ\n特殊文字を処理できる必要があります。たとえば、 ReplaceString("One\n\rMicrosoft\n\r\Way","\n\r"," ") は "One Microsoft Way"を返します。 |
| アウトプット |
文字列内のすべての OldValue が NewValue に置き換えられた文字列 。 |
データ取得関数
データ取得関数は、文字列から目的の文字を取得する操作を実行するために使用されます。
| ワード |
ディテール |
| 説明 |
Word 関数は、使用する区切り記号と返す単語の番号を表すパラメーターに基づいて、文字列内に含まれる単語を返します。 |
| 関数シグネチャ |
String Word(string, number, delimiters) |
| 入力 |
-
string: 単語を返す文字列。
-
number: 返される単語番号を識別する数値。
-
delimiters: 単語を識別するために使用する区切り記号を表す文字列。
|
| オペレーション |
区切り記号内の文字の 1 つで区切られた文字列内の文字の各文字列は、単語として識別されます。
文字列が null の場合、関数は空の文字列を返します。
数値で指定された位置に見つかった単語が返されます。
数値< 1 の場合、関数は空の文字列を返します。 例えば次が挙げられます。-
Word("Test;of%function;", 3, ";$&%") は、"function" を返します。 -
Word("Test;;Function" , 2 , ";") は "" (空の文字列) を返します。 -
Word("Test;of%function;", 0, ";$&%") は "" (空の文字列) を返します。
|
| アウトプット |
ユーザーが要求した位置にある単語を含む文字列。
文字列に含まれる単語数が少ない場合、または文字列に区切り記号で識別される単語が含まれていない場合は、空の文字列が返されます。 |
| 左 |
ディテール |
| 説明 |
Left 関数は、文字列の左 (先頭) から指定した文字数を返します。 |
| 関数シグネチャ |
String Left(string, numChars) |
| 入力 |
-
string: 文字を返す文字列。
-
numChars: 文字列の先頭から返される文字数を示す数値。
|
| オペレーション |
numChars 文字は、 文字列の最初の位置から返されます。 たとえば、 Left("Britta Simon", 3) は "Bri"を返します。 |
| アウトプット |
文字列内の最初の numChars 文字を含む 文字列。
numChars = 0 の場合、関数は空の文字列を返します。
numChars< 0 の場合、関数は入力文字列を返します。
文字列が null の場合、関数は空の文字列を返します。 |
| はい |
ディテール |
| 説明 |
Right 関数は文字列の右端から数えて指定した文字数分の文字を返します。 |
| 関数シグネチャ |
String Right(string, numChars) |
| 入力 |
-
string: 文字を返す文字列。
-
numChars: 文字列の末尾から返される文字数を示す数値。
|
| オペレーション |
文字列の末尾から numChars 文字を返 します。 たとえば、 Right("Britta Simon", 3) は "mon"を返します。 |
| アウトプット |
文字列内の最後の numChars 文字を含む 文字列。
numChars = 0 の場合、関数は空の文字列を返します。
numChars< 0 の場合、関数は入力文字列を返します。
文字列が null の場合、関数は空の文字列を返します。
文字列に含まれる文字数が numChars で指定された数より少ない場合は、文字列が返されます。 |
| 半ば |
ディテール |
| 説明 |
Mid 関数は文字列の指定した位置から数えて、指定した文字数分の文字を返します。 |
| 関数シグネチャ |
String Mid(string, pos, numChars) |
| 入力 |
-
string: 文字を返す文字列。
-
pos: 文字を返す文字列の開始位置を示す数値。
-
numChars: 文字列内の位置から返す文字数を示す数値。
|
| オペレーション |
文字列内の位置 pos から始まる numChars 文字を返します。 たとえば、 Mid("Britta Simon", 3, 5) は "itta "を返します。 |
| アウトプット |
文字列内の位置 pos の numChars 文字を含む文字列。
numChars = 0 の場合、関数は空の文字列を返します。
numChars< 0 の場合、この関数は空の文字列を返します。 文字列の長さを pos> 場合、関数は入力文字列を返します。
pos<= 0 の場合、この関数は入力文字列を返します。
文字列が null の場合、関数は空の文字列を返します。 位置 pos から文字列に numChar 文字が残っていない場合は、できるだけ多くの文字が返されます。 |
データ生成関数
データ生成関数は、特定のデータ型の値を生成するために使用されます。
| CRLF |
ディテール |
| 説明 |
CRLF 関数は、復帰/改行を生成します。 この関数を使用して、新しい行を追加します。 |
| 関数シグネチャ |
String CRLF |
| 入力 |
なし。 |
| オペレーション |
CRLF が返されます。 例えば次が挙げられます。
AddressLine1 + CRLF() + AddressLine2 結果 AddressLine1
AddressLine2。 |
| アウトプット |
CRLF は出力です。 |
| RandomNum |
ディテール |
| 説明 |
RandomNum 関数は、指定された間隔内の乱数を返します。 |
| 関数シグネチャ |
Int RandomNum(start, end) |
| 入力 |
-
start: 生成するランダム値の下限を識別する数値。
-
end: 生成するランダム値の上限を識別する数値。
|
| オペレーション |
開始値以上で終了以下の乱数が生成されます。 たとえば、 Random(0,999) は 100を返します。 |
| アウトプット |
開始と終了で指定された範囲内の乱数。 |
| EscapeDNComponent |
ディテール |
| 説明 |
MIISUtils の EscapeDNComponent メソッドは、この操作を実行するために使用されます。 このメソッドは、使用されている管理エージェント (MA) の種類に基づいて入力文字列を処理します。 |
| 関数シグネチャ |
String EscapeDNComponent(string) |
| 入力 |
string: 識別名の処理に使用される文字列。 文字列にはエスケープ文字を含めてはなりません。 |
| オペレーション |
MA が異なると、異なる識別名の形式が必要になります。 このメソッドは、次の MA 型に基づいて入力 文字列 を処理します。-
LDAP 識別名: この MA の種類の例としては、Active Directory Domain Services、Sun Directory Server (旧称 iPlanet Directory Server)、Microsoft Exchange Server などがあります。
- 特定の部分の値部分に無効な XML 文字がある場合は、16 進数でエンコードされます。
- 指定された部分の名前部分に無効な文字 (無効な XML 文字を含む) がある場合、エラーが発生します。
- エスケープ文字には、コンマ (,)、等号 (=)、プラス (+)、より小さい (<)、より大きい (>)、数値 (#)、セミコロン (;)、円記号 ()、および二重引用符 (") が含まれます。
-
文字列の最後の文字がスペース ( ) の場合、そのスペースはエスケープされます。
- パーツ名の前後にある余分な先頭または末尾のスペースはすべて削除されます。
- XML MA の場合、複数の部分がある場合、その部分はアルファベット順に表示されます。
- 複数の部分が指定されている場合、複合識別名文字列は、プラス記号 (+) で区切られた個々の文字列を連結したものです。
- 入力文字列が整形式の LDAP スタイルの識別名 文字列 でない場合は、エラーが生成されます。
-
LDAP 以外の階層: この種類の MA の例として、Microsoft Lotus Notes があります。
- この MA の種類では、マルチパート コンポーネントはサポートされていません。
- 複数の文字列が
EscapeDNComponentに渡されると、 ArgumentException がスローされます。 - 入力 文字列 内のいずれかの文字が無効な XML 文字である場合は、 ArgumentException がスローされます。
- 入力 文字列 内のすべてのコンマ (,) と円記号 (/) はエスケープされます。
-
文字列の最後の文字がスペース ( ) の場合、そのスペースはエスケープされます。
-
Extrinsic: この MA 型の例には、LDAP 識別名のないデータベースまたは XML が含まれます。
- いずれかの部分がバイナリであるか、無効な XML 文字が含まれている場合、その部分は、文字列の先頭に先頭に数字 (#) 文字が付いた生データの 16 進数でエンコードされたバージョンとして格納されます。 たとえば、パーツが
AxC された場合 (x は 0x10などの無効な XML 文字を表します)、その部分は #410010004300としてエンコードされます。 それ以外の場合、これらの文字のすべてのインスタンスはエスケープされます。円記号 ()、コンマ (、)、プラス (+)、数値 (#) です。 - 特定の部分文字列の最後の文字がスペース ( ) の場合、そのスペースはエスケープされます。
- 複数の部分が指定されている場合、複合識別名文字列は、プラス記号で区切られたすべての個々の文字列を連結したものです。
|
| アウトプット |
有効なドメイン名を含む文字列。 |
注
識別名の検証は、LDAP 仕様で定義されている構文よりも厳密ではありません。
EscapeDNComponent(String[]) では、パーツ名に 1 つ以上の文字 'a'-'z'、'A'-'Z'、'0'-'9'、'-'、'.' の任意の組み合わせを含めます。
このメソッドを使用してバイナリ部分を指定することはできません。 ただし、識別名がアンカー属性から構築され、アンカー属性の 1 つがバイナリ型である場合は、 CommitNewConnector にバイナリ部分を含める可能性があります。
| Null |
ディテール |
| 説明 |
Null 関数は、MA に貢献する属性がないことを指定するために使用され、その属性の優先順位は次の MA で続行する必要があります。 |
| 関数シグネチャ |
String Null |
| 入力 |
なし。 |
| オペレーション |
Null が返されます。 たとえば、 IIF(Eq(domain), "unknown", Null()) は Nullを返します。 |
| アウトプット |
Null が出力されます。 |
ロジック関数
ロジック関数は、システムによって評価された条件に基づいて操作を実行するために使用されます。
| IIF |
ディテール |
| 説明 |
IIF 関数は、指定した条件に基づいて、使用できる一連の値のうち、いずれかを返します。 |
| 関数シグネチャ |
Object IIF(condition, valueIfTrue, valueIfFalse) |
| 入力 |
-
condition: true または false に評価できる任意の値または式。 次の関数は、条件の IIF 関数で式として使用できます。
-
Eq: この関数は、2 つの引数の等価性を比較します。
-
NotEquals: この関数は、2 つの引数の不等値を比較し、等しくない場合は true を、等しい場合は false を返します。 (例:
NotEquals(EmployeeType, "Contractor"))。 -
LessThan: この関数は 2 つの数値を比較し、最初の数値が 2 番目より小さい場合は true を返し、それ以外の場合は false を返します。 (例:
LessThan(Salary, 100000))。 -
GreaterThan: この関数は 2 つの数値を比較し、最初の数値が 2 番目より大きい場合は true を返し、それ以外の場合は false を返します。 (例:
GreaterThan(Salary, 100000))。 -
LessThanOrEquals: この関数は 2 つの数値を比較し、最初の数値が 2 番目以下の場合は true を返し、それ以外の場合は false を返します。 (例:
LessThanOrEquals(Salary, 100000))。 -
GreaterThanOrEquals: この関数は 2 つの数値を比較し、最初の数値が 2 番目以上の場合は 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) は、ユーザーがインターンの場合、エイリアスの先頭に "t-" が追加されたユーザーのエイリアスを返します。 それ以外の場合、関数はユーザーのエイリアス as-isを返します。 |
| アウトプット |
条件が true の場合は valueIfTrue 、条件が false の場合は valueIfFalse が出力されます。 |