SSIS执行PowerShell脚本:如何传递输出至User::TestStatus变量
解决SSIS中PowerShell输出传递至变量的问题
检查PowerShell脚本输出逻辑
- 确保PowerShell脚本用
Write-Output返回结果,别用Write-Host(后者仅输出到控制台,无法被SSIS捕获)。示例:$output = "需要返回的内容" Write-Output $output.Trim() - 用
Trim()处理结果,避免多余换行或空白字符干扰赋值。
配置SSIS执行进程任务
- 在「执行进程任务」的「表达式」面板中:
- 把
StandardOutputVariable设置为User::TestStatus,确认变量类型为字符串。 - 可选配置
StandardErrorVariable捕获错误信息,防止错误输出覆盖正常结果。
- 把
- 到「选项」页取消勾选「忽略退出代码」,保证脚本执行完成后再传递输出。
修正变量赋值逻辑
- 别直接用表达式修改
User::TestStatus——执行进程任务的输出会覆盖变量值,提前的表达式修改会导致值被清空。 - 若需处理返回值,在执行进程任务后加脚本任务,读取变量并处理后重新赋值。示例C#代码:
string rawStatus = Dts.Variables["User::TestStatus"].Value.ToString(); Dts.Variables["User::TestStatus"].Value = rawStatus.Trim().Replace("\r\n", "");
关于断点临时值的说明
你看到的{20\r\n}是SSIS调试时的临时格式,20代表返回字符串长度,\r\n是换行符,说明脚本确实有输出,重点排查执行进程任务的输出变量配置是否正确。
内容的提问来源于stack exchange,提问作者lsw
相关产品推荐
相关产品推荐

