宣言型のプロビジョニングの式について
更新日: 2015 年 7 月 22 日
重要
このトピックは近日中にアーカイブされます。
AADSyncと DirSync を置き換える "Azure Active Directory Connect" という新しい製品があります。
Azure AD Connect には、以前 Dirsync と AAD Sync としてリリースされたコンポーネントと機能が組み込まれています。
将来のある時点で、Dirsync とAAD Syncのサポートは終了します。
これらのツールは機能改善によって個別に更新されなくなり、今後のすべての機能強化は Azure AD Connectの更新プログラムに含まれる予定です。
Azure Active Directory Synchronization Services (AAD Sync) は、Forefront Identity Manager 2010 で初めて導入された宣言型のプロビジョニングを基盤としています。これは、コードを記述することなく完全な ID 統合ビジネス ロジックを実装できるようにするためのものです。
宣言型のプロビジョニングの不可欠な要素は、属性フローに使用される式言語です。 使用される言語は、Microsoft ® Visual Basic ® for Applications (VBA) のサブセットです。 この言語は、Microsoft Office で使用され、VBScript の経験を持つユーザーも理解できます。 宣言型のプロビジョニングの式言語は、関数のみを使用し、構造化言語ではありません。メソッドやステートメントはありません。 代わりに関数がネストされて、プログラム フローを表します。
詳細については、「 Office 2013 Visual Basic for Applications 言語リファレンスへようこそ」を参照してください。
属性は厳密に型指定されます。 単一値の文字列属性を想定している関数では、複数値や異なる型の属性は受け入れられません。 また、大文字と小文字が区別されます。 関数名と属性名のいずれも、適切に大文字と小文字を使用する必要があります。そのようにしない場合、エラーがスローされます。
言語の定義と識別子
関数の名前の後に角かっこで囲まれた引数 FunctionName(<<引数 1>>,<<引数 N>>) があります。
属性は、角かっこで識別されます。たとえば、[attributeName] などです。
パラメーターは、パーセント記号で識別されます。たとえば、%ParameterName% などです。
文字列定数は引用符で囲まれています。例: "Contoso"
数値は、引用符を使用しないで表され、10 進数であることが求められます。 16 進数の値には、&H がプレフィックスとして付加されます。 例: 98052、 &HFF
ブール値は、定数 (True、False) で表されます。
組み込み定数は、NULL、CRLF、IgnoreThisFlow という名前でのみ表されます。
オペレーター
次の演算子を使用できます。
比較: <, <=, <>, =, >, >=
算術: +、-、*、-
文字列: & (連結)
論理: && (AND)、|| (OR)
評価順序: ( )
演算子は、左から右の順に評価されます。 2*(5+3) は、2*5+3 と同じではありません。 評価順序を変更するには、角かっこ ( ) を使用します。
パラメーター
パラメーターは、コネクタによって定義されるか、PowerShell を使用する管理者によって定義されます。 パラメーターには通常、システム間で異なる値 (ユーザーが配置されているドメインの名前など) が含まれます。 これらは属性フローで使用できます。
Active Directory Connector は、受信同期ルールについて次のパラメーターを提供しています。
Domain.Netbios |
Domain.FQDN |
Domain.LDAP |
Forest.Netbios |
Forest.FQDN |
Forest.LDAP |
システムは次のパラメーターを提供します。
Connector.ID
メタバース属性ドメインに、ユーザーが配置されているドメインの netbios 名を設定する例。
domain <- %Domain.Netbios%
一般的なシナリオ
属性の長さ
文字列属性は、既定では、インデックス可能で、最大長は 448 文字に設定されています。 それより多い文字を含む可能性がある文字列属性を使用する場合は、属性フローに次の式を含めるようにします。
attributeName <- Left([attributeName],448)
userPrincipalSuffix の変更
Active Directory の userPrincipalName 属性は、ユーザーによって常に認識されるとは限らず、ログイン ID として適していない可能性があります。 AAD Syncインストール ガイドでは、メールなど、別の属性を選択できます。 ただし、場合によっては、属性を計算する必要があります。 たとえば、Contoso 社に 2 つの AAD ディレクトリがあり、一方は運用環境用、もう一方はテスト用であるとします。 テスト テナントのユーザーに対して、ログイン ID.userPrincipalName - Word([userPrincipalName <],1,"@") & "@contosotest.com" のサフィックスのみを変更する必要があります。
この式では、最初の @ 記号の左側すべてを使用し (Word)、固定文字列をそこに連結します。
複数値から単一値への変換
Active Directory の一部の属性は、Active Directory ユーザーとコンピューターでは単一値に見えますが、スキーマでは複数値になっています。 例として挙げられるのが、説明属性です。
この式で属性が値を持つ場合は、属性の最初のアイテムを使用し (Item)、先頭と末尾のスペースを削除して (Trim)、文字列の最初の 448 文字を維持します (Left)。
先進的概念
NULL と IgnoreThisFlow
受信同期ルールの場合は、定数 NULL を常に使用する必要があります。 これは、提供する値がフローになく、別のルールで値を提供できることを示します。 値を提供するルールがない場合、メタバース属性は削除されます。
送信同期ルールでは、使用する定数として NULL および IgnoreThisFlow の 2 つがあります。 いずれも、提供する値が属性フローにないことを示しますが、相違点は、提供する値が他のルールにもないときの動作です。 接続されたディレクトリに既存の値がある場合、NULL は属性に delete をステージングして既存の値を削除しますが、IgnoreThisFlow は既存の値を維持します。
ImportedValue
ImportedValues 関数は、属性名を角かっこではなく引用符で囲む必要があるため、他のすべての関数とは異なります: ImportedValue("proxyAddresses")。
通常、同期する際は、まだエクスポートされていない場合であっても、エクスポート中にエラーが発生した場合であっても、属性では予想される値を使用します ("top of the tower")。 受信同期では、接続されたディレクトリにまだ届いていない属性も最終的には届くと見なされます。 また、接続されたディレクトリで確認されている値のみを同期することが重要な場合もあり、この場合は ImportedValue 関数が使用されます ("hologram and delta import tower")。
この場合の例は、あらかじめ用意された同期ルールである Exchange の In from AD – User Common で確認できます。そこでは、Exchange ハイブリッドにおいて、Exchange Online で追加された値を、その値が正常にエクスポートされたことが確認された場合にのみ同期する必要があります。
proxyAddresses <- RemoveDuplicates(Trim(ImportedValues(“proxyAddresses”)))
関数の一覧
変換
CBool |
CDate |
CGuid |
ConvertFromBase64 |
ConvertToBase64 |
ConvertFromHex |
ConvertToHex |
CNum |
CRef |
CStr |
StringFromGuid |
StringFromSid |
日付/時刻
DateAdd |
DateFromNum |
FormatDateTime |
Now |
NumFromDate |
ディレクトリ
DNComponent |
DNComponentRev |
EscapeDNComponent |
検査
IsBitSet |
IsDate |
IsEmpty |
IsGuid |
IsNull |
IsNullOrEmpty |
IsNumeric |
IsPresent |
IsString |
数値演算
BitAnd |
BitOr |
RandomNum |
[複数値]
内容 |
Count |
項目 |
Join |
RemoveDuplicates |
Split |
プログラム フロー
エラー |
IIF |
Switch |
Text
GUID |
InStr |
InStrRev |
LCase |
Left |
Len |
LTrim |
Mid |
PadLeft |
PadRight |
PCase |
Replace |
ReplaceChars |
Right |
RTrim |
Trim |
UCase |
Word |
Special
ImportedValues