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 中发生重命名时(比如用户的 distinctName 更改,如果它们被移动或它们的 cn 值更改),那么我希望 FIM 删除 sql 记录并使用新的 distinctname 值重新创建新记录对于 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 来做到这一点。请帮忙。

谢谢你。燃气轮机

4

0 回答 0