2

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

我正在使用 KingswaySoft 的用于目录服务连接管理器的 SSIS 集成工具包来访问 AD 信息。- 或者如果有另一种机制,也很高兴听到其他人在使用什么!

我很擅长连接和写入数据库表,但是循环部分以及如何传递参数和构建要写入的数据行让我摸不着头脑:\ -help!

4

2 回答 2

0

您可以使用 powershell 将数据暂存到文件中,然后使用 SSIS 加载该文件。Powershell 有一个可用于此目的的活动目录 cmdlet 模块。谷歌“远程服务器管理工​​具”搜索在哪里下载。这是 Windows 10 的链接:https ://www.microsoft.com/en-us/download/details.aspx?id=45520

以下是一些安装说明 > https://4sysops.com/archives/how-to-install-the-powershell-active-directory-module/

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

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

$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
    }
}
  1. 添加执行流程任务。
    • 将 powershell 指定为可执行文件 (C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe)
    • 将此添加为参数:-ExecutionPolicy Bypass -File c:\temp\StageAdUsers.ps1
  2. 添加数据流任务以加载平面文件的内容

在上面的脚本中,我们使用 Get_AdGroup cmdlet 来获取所有组。如果有意义的话,这可以被过滤掉。有一个名为 Get-AdGroupMembers 的 cmdlet,但它有大小限制,因此我们使用“-properties members”作为解决方法。
最后,我们将组名和用户名放在一行中,用制表符 (`t) 分隔。如果文件不存在,add-content 将创建该文件并简单地追加一个新行。如果文件存在,脚本的开头将删除该文件。

于 2017-02-15T18:44:05.387 回答
0

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

在此处输入图像描述

[ContainerPath]属性参数化后,您可以将此数据流任务(包含 AD 源组件)放入Foreach 循环容器中,并为您之前指定的变量提供组路径,以便在运行包时任务将循环通过所有组并返回相应组的成员信息。

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

金斯威软件支持

于 2017-02-14T17:05:11.483 回答