Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#SSI从Active Directory加载多行_C#_Ssis_Active Directory - Fatal编程技术网

使用C#SSI从Active Directory加载多行

使用C#SSI从Active Directory加载多行,c#,ssis,active-directory,C#,Ssis,Active Directory,我在将信息从active directory加载到SSIS脚本时花了很多时间。我已经放下了加载部分(我的项目中有几个部分工作正常,但不是这个部分)。我遇到的问题是从Active Directory加载 我在网上找到了几个不同的例子。虽然我熟悉编程,但C#并不是我的首选语言,所以要找出问题所在有点困难 我想做的是使用脚本组件获取单个域Active Directory中的所有用户。我尝试过的脚本有时不返回任何内容,但通常只返回一行 下面是我当前使用的代码。谁能告诉我我做错了什么 我使用最新版本的Vi

我在将信息从active directory加载到SSIS脚本时花了很多时间。我已经放下了加载部分(我的项目中有几个部分工作正常,但不是这个部分)。我遇到的问题是从Active Directory加载

我在网上找到了几个不同的例子。虽然我熟悉编程,但C#并不是我的首选语言,所以要找出问题所在有点困难

我想做的是使用脚本组件获取单个域Active Directory中的所有用户。我尝试过的脚本有时不返回任何内容,但通常只返回一行

下面是我当前使用的代码。谁能告诉我我做错了什么

我使用最新版本的Visual Studio Community 2015构建SSIS,并使用C#2015构建脚本组件

public override void CreateNewOutputRows()
{

   try
   {

    string groupName = "Domain Users";
    PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "mic.local");

    UserPrincipal qbeUser = new UserPrincipal(ctx);
    //GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, groupName);


    PrincipalSearcher srch = new PrincipalSearcher(qbeUser);


    foreach(UserPrincipal found in srch.FindAll())
    {

    //foreach (Principal found in grp.GetMembers(false))
    //{ 

        //UserPrincipal userFound = found as UserPrincipal;

        MyOutputBuffer.AddRow();
        MyOutputBuffer.LoginName = found.SamAccountName;
        MyOutputBuffer.OfficeLocation = found.GetOfficeLocation();
        MyOutputBuffer.Lastname = found.getLastName();
        MyOutputBuffer.Middlename = found.getMiddleName();
        MyOutputBuffer.Firstname = found.getFirstName();
        MyOutputBuffer.CreatedDate = Convert.ToDateTime(found.GetCreateDate());
        MyOutputBuffer.EmailAddress = found.getEmail();
        MyOutputBuffer.IsDeleted = Convert.ToBoolean(found.GetIsDeleted());

    }

    ctx.Dispose();
}
catch
{
   //
}

这个代码对我有用。可能会抛出异常。您可以记录catch块中的错误或添加messagebox吗?我不确定是否可以显示控制台输出,甚至消息框,因为它位于SSIS组件中。不过我可以把东西倒进文本文件里。我会尝试一下,然后很快粘贴到这里……好吧,我想我可以。结果表明脚本组件没有错误输出:-(您可以在catch块中填充另一个输出缓冲区。或者在代码中添加一个断点并逐步执行,直到遇到错误或添加到catch块catch(异常e){Messagebox.show(e.Message);}谢谢。我将在下一步进行尝试。;-)