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
用于循环的SSIS包,用于扩展AD组成员列表_Ssis_Active Directory_Expansion_Active Directory Group_Activedirectorymembership - Fatal编程技术网

用于循环的SSIS包,用于扩展AD组成员列表

用于循环的SSIS包,用于扩展AD组成员列表,ssis,active-directory,expansion,active-directory-group,activedirectorymembership,Ssis,Active Directory,Expansion,Active Directory Group,Activedirectorymembership,我是SSIS工具的新用户,我喜欢它!但我有一个项目,我不知道如何配置该工具。我在一个MySQL表中有一个大约300个域组的列表,我需要通过循环读取每个域组,并为每个组查询ActiveDirectory以获得成员的列表/枚举。我会将结果写入另一个表,该表的第一列中有组名,第二列中有sAMAccountName。每个域组成员一行,不是包含所有成员的单行,而是组中每个帐户成员一行 我正在使用金山软件的SSIS集成工具包用于目录服务连接管理器来访问广告信息。-或者,如果有另一种机制,听到别人在用什么也会

我是SSIS工具的新用户,我喜欢它!但我有一个项目,我不知道如何配置该工具。我在一个MySQL表中有一个大约300个域组的列表,我需要通过循环读取每个域组,并为每个组查询ActiveDirectory以获得成员的列表/枚举。我会将结果写入另一个表,该表的第一列中有组名,第二列中有sAMAccountName。每个域组成员一行,不是包含所有成员的单行,而是组中每个帐户成员一行

我正在使用金山软件的SSIS集成工具包用于目录服务连接管理器来访问广告信息。-或者,如果有另一种机制,听到别人在用什么也会很好

我擅长连接和写入db表,但循环部分以及如何传递参数和构建要写入的数据行让我抓狂:\
-救命啊

为了在不同组中的组成员之间循环,您需要参数化AD源组件的[ContainerPath]属性。您可以使用SSIS中的属性表达式编辑器来参数化此属性,并指定可在Foreach循环容器中使用的变量

一旦参数化了[ContainerPath]属性,就可以放置此数据流任务(包含AD源组件)进入Foreach循环容器,并提供前面指定的变量的组路径,以便在运行包时,任务将循环所有组并返回相应组的成员信息

感谢您选择金斯威软件作为您的集成解决方案。希望这能回答您的问题,如果您还有其他问题,请随时告诉我们


金山软件支持

您可以使用powershell将数据暂存到文件中,然后使用SSI加载该文件。Powershell有一个active directory cmdlet模块,可用于此目的。谷歌“远程服务器管理工具”搜索从哪里下载。这是windows 10的链接:

以下是一些安装说明>

安装后,按照以下步骤设置软件包:

  • 创建powershell脚本文件(即c:\temp\StageAdUsers.ps1)
    • 添加以下内容:
  • :

  • 添加一个执行流程任务。
    • 将powershell指定为可执行文件(C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe)
    • 将此添加为参数:-ExecutionPolicy Bypass-文件c:\temp\StageAdUsers.ps1
  • 添加数据流任务以加载平面文件的内容
  • 在上面的脚本中,我们使用Get_AdGroup cmdlet获取所有组。如果这有意义的话,可以将其过滤掉。有一个名为Get-AdGroupMembers的cmdlet,但它有一个大小限制,因此我们使用“-properties members”作为解决方法。
    最后,我们将组名和用户名放在一行中,用一个制表符(`t)分隔。如果文件不存在,“添加内容”将创建该文件,并简单地追加一个新行。如果文件存在,脚本的开头将删除该文件

    m

    $adserver = "mydomain.com"
    $outputFile = "c:\temp\myad.txt"
    if (test-path $outputFile)
    {
        remove-item $outputFile
    }
    
    
    $groups = Get-ADGroup -server $adserver -filter * -Properties members
    foreach($group in $groups)
    {
    
        foreach($member in $group.members)
        {
            $user = get-aduser $member -ErrorAction SilentlyContinue
            $newLine = "$($group.SamAccountName)`t$($user.SamAccountName)"
            add-content $outputFile  $newLine
        }
    }