1

こんにちは 昨日質問を投稿しました。ただし、FIMを使用して次のことができるかどうかを調べています。

AD からユーザー オブジェクトをインポートし、SQL テーブルにエクスポートしています。SQL テーブルの設計は次のとおりです。

CREATE TABLE [dbo].[tbl_FGPP_Members](
    [MemberObjectGUID] [varbinary](50) NULL,
    [MemberDN] [nvarchar](255) NOT NULL,
    [MemberObjectType] [nvarchar](10) NOT NULL,
    [Member_ADDomain] [nvarchar](16) NULL,
    [Member_sAMAccountName] [nvarchar](64) NULL
) ON [PRIMARY]

AD ユーザー オブジェクトを mv:person にインポートしています。以下はフロー ルールです。

ここに画像の説明を入力

私はこれまでに機能するものを手に入れました。私がやろうとしているのは、ADで名前の変更が発生したとき(ユーザーのdistinguishedNameの変更、移動またはcn値の変更など)の場合、FIMでSQLレコードを削除し、新しいdistinguishname値で新しいレコードを再作成することですMemberDN 列の場合。

これを行うことは可能ですか?メタバース プロビジョニング コードには、次のものがあります。

      void IMVSynchronization.Provision (MVEntry mventry)
    {

        ConnectedMA sqlAnchorRenameUser;
        string mvObjectType = null;

switch (mventry.ObjectType)
            {

                case "SQLAnchorRenameUser":
                    sqlAnchorRenameUser = mventry.ConnectedMAs["SQL Anchor Rename SQLMA"];

                if (sqlAnchorRenameUser.Connectors.Count == 0)
                {
                    createAnchorRenameSQLUser(mventry, sqlAnchorRenameUser);
                }
                if (sqlAnchorRenameUser.Connectors.Count == 1)
                {
                    updateAnchorRenameSQLUser(mventry, sqlAnchorRenameUser);
                }


 }}

        void createAnchorRenameSQLUser(MVEntry mventry, ConnectedMA sqlAnchorRenameUser)
        {
            CSEntry csentry;
            csentry = sqlAnchorRenameUser.Connectors.StartNewConnector("AnchorRenameUser");
            csentry["distinguishedName"].Value = mventry["ADdistinguishedName"].Value;

            try
            {
                csentry.CommitNewConnector();
            }
            catch (System.Exception Ex)
            {
                throw new UnexpectedDataException(Ex.Message);
            }
        }

        void updateAnchorRenameSQLUser(MVEntry mventry, ConnectedMA sqlAnchorRenameUser)
        {
            CSEntry csentry;
            ReferenceValue dn;

            csentry = sqlAnchorRenameUser.Connectors.ByIndex[0];
            dn = sqlAnchorRenameUser.EscapeDNComponent(mventry["ADdistinguishedName"].Value);

            // Check to see if the distinguishedName flowing from AD has changed...
            if (mventry["ADdistinguishedName"].Value.ToLower() != mventry["isRenamed"].Value.ToLower())
            {
                // disconnect the old object.
                csentry.Deprovision();

                //Now provision new connector
                createAnchorRenameSQLUser(mventry, sqlAnchorRenameUser);

            }

        }

しかし、それはエラーをスローします。動作していません:(

FIM for SQL でこのようなことができますか? 私がインターネットで読んだすべてのことから、FIMはSQLのアンカーの名前を変更することを許可していないようです。そのため、他の人が推奨しているのは、レコードを削除して SQL で再作成することです。これは私にとってはうまくいきますが、それを行うように FIM を構成するのに苦労しています。助けてください。

ありがとうございました。GT

4

0 に答える 0