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