【问题标题】:How to load Powershell output into a SQL Table using SSIS?如何使用 SSIS 将 Powershell 输出加载到 SQL 表中?
【发布时间】:2015-12-18 06:19:17
【问题描述】:

我正在尝试获取在我的域中被禁用的所有用户并将其放入 SQL 表中。我正在尝试使用 SSIS 来做到这一点。现在我可以使用以下代码获取正确的输出并将其放入 CSV 文件中:

Search-ADAccount -AccountDisabled -UsersOnly | 
    Select Name | 
    Export-CSV -Path C:\Users\hou\Downloads\Test.csv

但是由于我要在不同的服务器上运行该程序包,并且我不能有一个固定的位置来存储文件并加载到 SQL 表中。因此,要么我将在执行流程任务(我在其中运行 Powershell 脚本)中使用一个变量来存储 CSV 文件,要么使用 SSIS 将输出直接存储在 SQL 表中。

但我不知道这两个。我该怎么做?

【问题讨论】:

标签: sql-server powershell ssis


【解决方案1】:

位置应在脚本中定义,即:

$Path = Get-Location

"$Path\Test.csv"

#Option 1 just a Name
$Path = Get-Location ; Get-ChildItem C:\temp | Select-Object Name | Export-CSV -Path "$Path\Test.csv"

## Option 2 Name, with other property
$Path = Get-Location ; Get-ChildItem C:\temp | Select-Object Name,mode | Export-CSV -Path "$Path\Test.csv"

对于一个衬线脚本,使用“;”分隔命令。

【讨论】:

    【解决方案2】:

    我建议使用 PowerShell 将数据加载到 SQL 中。 Microsoft 提供了一个名为“sqlserver”的免费 PowerShell 模块,它允许 PowerShell 直接与 SQL 对话。您可能已经安装了它。

    ## Check if installed:
    Get-InstalledModule -Name SqlServer
    ## If installed you can Update (you may need to run as local admin):
    Update-Module -Name SqlServer
    ## If not installed (only need admin if you want all users to have access to this module):
    Install-Module SqlServer
    

    安装模块后,会有一个名为“Write-SqlTableData”的 cmdlet 将数据批量复制到 SQL 中。假设是 (1) 表已经存在于 SQL 中。 (2) PowerShell Select 中的所有列都与 SQL 表中存在的顺序和数据类型匹配。在这种情况下,将有一个带有单个 [Name] 列的 SQL 表。 (3) 您正在使用您的 AD 凭据访问 SQL,否则您必须将凭据添加到 cmdlet。

    实际的 PowerShell 代码,更新引号中的变量:

    ## Input Variables
    $SqlServerName = ""
    $SqlDatabaseName = ""
    $SqlTableSchemaName = ""
    $SqlTableName = ""
    
    ## Insert into SQL
    Search-ADAccount -AccountDisabled -UsersOnly | Select-Object Name | Write-SqlTableData -ServerInstance $SqlServerName -DatabaseName $SqlDatabaseName -SchemaName $SqlTableSchemaName -TableName $SqlTableName -Force
    

    附带说明,如果您打算执行大量 PowerShell/SQL 工作,您可能还需要安装“WFTools”模块,因为它还有许多额外的 SQL cmdlet。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 2017-06-06
      • 1970-01-01
      相关资源
      最近更新 更多