在SSIS中执行powershell脚本,参数不成功

时间:2015-12-22 21:54:55

标签: powershell ssis powershell-remoting ssis-2012

我有以下Powershell脚本:

#Set up server and AC parameters
param([string]$DBServer, [string]$ACString1, [string]$AcString2, [string]$ACString3, [string]$ACString4, [string]$ACString5, [string]$ACString6, [string]$ACString7, [string]$ACString8, [string]$ACString9, [string]$ACString10)

$ACString1 = $ACString1 -replace "'", ""
$ACString2 = $ACString2 -replace "'", ""
$ACString3 = $ACString3 -replace "'", ""
$ACString4 = $ACString4 -replace "'", ""

#Set up new session object for accessing production
$sess = new-pssession -computer $DBserver

#Execute AC
#invoke-command -session $sess -ScriptBlock {param($scriptACString)& 'C:\Program Files (x86)\LexisNexis\InterAction\IAAppCol\INTIATBC.EXE' Our Personnel/Personnel Bus Addr}  -args $ACString invoke-command -session $sess -ScriptBlock {param($a, $b, $c, $d, $e, $f, $g, $h, $i, $j)& 'C:\Program Files (x86)\LexisNexis\InterAction\IAAppCol\INTIATBC.EXE' $a $b $c $d $e $f $g $h $i $j} -ArgumentList($ACString1, $AcString2, $AcString3, $AcString4, $AcString5, $AcString6, $AcString7, $AcString8, $AcString9, $AcString10) 

这是以这种方式设置的,因为如果单引号或双引号与任何参数一起传递,它调用的可执行文件将不起作用。因此,我将每个令牌单独传递,因为传递它作为一个参数将导致每个令牌周围有单引号。

从powershell命令提示符执行时,它成功:

PS C:\users\mp071663_e> ./executeac.ps1 stvsqld08 our personnel

当我尝试在SSIS中执行此操作时,我无法成功执行它。使用执行流程任务。配置如下:

Executable: C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe 
Arguments: -ExecutionPolicy ByPass -command  ". 'C:\Users\mp071663_e\ExecuteAC.ps1' stvsqld08 Our Personnel"

我还尝试过以下方法:

Arguments: -ExecutionPolicy ByPass -command  ". 'C:\Users\mp071663_e\ExecuteAC.ps1' 'stvsqld08' 'Our' 'Personnel'"
Arguments: -ExecutionPolicy ByPass -command  ". 'C:\Users\mp071663_e\ExecuteAC.ps1' -$DBServer 'stvsqld08' -$ACString1 'Our' -$ACString2 'Personnel'"
Arguments: -ExecutionPolicy ByPass -command  ". 'C:\Users\mp071663_e\ExecuteAC.ps1' -$DBServer stvsqld08 -$ACString1 Our -$ACString2 Personnel"

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

可能是32/64位问题?从Visual Studio运行的SSIS包作为32位应用程序运行,您的脚本是否在32位PowerShell中运行?

您还设置了WorkingDirectory吗?