在SSIS包中超出Powershell脚本

Powershell脚本进入网站,获取一些信息并将其写入平面文件。 如果我在Powershell中运行脚本,它可以很好地工作,但是当我从SQL Server代理运行它时,它会失败。 我已经将服务器中的读/写权限授予运行该程序包的SQL Server代理用户。 我也尝试创建一个Step Type:PowerShell,并在作业中运行脚本; 操作系统(CmdExec)以文件名作为参数执行powershell命令; 操作系统(CmdExec)运行一个调用Powershell脚本的批处理文件。

这是powershell脚本:

$ie = New-Object -ComObject 'internetExplorer.Application'
$ie.Visible= $false
$ie.Navigate("https://www.frbservices.org/EPaymentsDirectory/fpddir.txt")
while ($ie.Busy -eq $true){Start-Sleep -seconds 1;}
$Link=$ie.Document.getElementsByTagName("button") | where-object {$_.value -eq "Agree"}
If($Link){
    $Link.click()
}
while ($ie.Busy -eq $true){Start-Sleep -seconds 1;}
$destination = ".FDRTestFileFDRFile.txt"
$content = (@($ie.Document.getElementsByTagName("pre"))[0].innerText | Out-
File $destination)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($ie)
Remove-Variable ie

工作结束时出现此错误:

New-Object:从IClassFactory创建CLSID为{0002DF01-0000-0000-C000-000000000046}的COM组件实例失败,原因如下:80004005未指定的错误(异常来自HRESULT:0x80004005(E_FAIL))。 在D: SSIS FDR DownloadFDRFile.ps1:1 char:7 + $ ie = New-Object -ComObject'internetExplorer.Application'+ ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo:ResourceUnavailable:(:) [New-Object] COMExcept ion + FullyQualifiedErrorId :NoCOMClassIdentifiedMicrosoft.PowerShell.Comman ds.NewObjectCommandProperty'Visible'在此对象上找不到; 确保它存在并可设置。 在D: SSIS FDR DownloadFDRFile.ps1:3 char:1 + $ ie.Visible = $ true + ~~~~~~~~~~~~~~~~~~类别:InvalidOperation:(: )[] RuntimeException + FullyQualifiedErrorId:PropertyNotFoundYou无法在空值表达式上调用方法。 在D: SSIS FDR DownloadFDRFile.ps1:4 char:1 + $ ie.Navigate(“https://www.frbservices.org/EPaymentsDirectory/fpddir.txt”)+ ~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ + CategoryInfo:InvalidOperation:(:) [] RuntimeException + FullyQualifiedErrorId:InvokeMethodOnNull您无法在空值表达式上调用方法。 在D: SSIS FDR DownloadFDRFile.ps1:8 char:1 + $ Link = $ ie.Document.getElementsByTagName(“button”)| where-object {$ _。value -eq“... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.~~~~~~~ CategoryInfo:InvalidOperation: (:) [] RuntimeException + FullyQualifiedErrorId:InvokeMethodOnNull您无法调用空值表达式的方法。在D: SSIS FDR DownloadFDRFile.ps1:17 char:15 + $ content =(@($ ie.Document。 getElementsByTagName(“pre”))[0] .innerText | Out-File ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ + CategoryInfo:InvalidOperation:(:) [] RuntimeException + FullyQualifiedErrorId:InvokeMethodOnNull使用“1”参数调用“ReleaseComObject”的异常:“未将对象引用设置为对象的实例。“在D: SSIS FDR DownloadFDRFile.ps1:18 char:1 + [System.Runtime.Interopservices.Marshal] :: ReleaseComObject($ ie)+ ~~~~~~~~~~~~~~ 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜+ CategoryInfo:NotSpecified:(:) [] MethodInvocationException + FullyQualifiedErrorId:NullReferenceException Remove-Variable:找不到变量 名字是'ie'。 在D: SSIS FDR DownloadFDRFile.ps1中:19 char:1 + Remove-Variable ie + ~~~~~~~~~~~~~~~~~~~~~(ie:String) [Remove-Variable]我temNotFoundException + FullyQualifiedErrorId:VariableNotFoundMicrosoft.PowerShell.Commands.R emoveVariableCommand。 处理退出码0.步骤成功,00:00:02,0,0 ,,,, 0

任何想法为什么发生这种情况?

链接地址: http://www.djcxy.com/p/29089.html

上一篇: Excecuting a Powershell script within a SSIS package

下一篇: Running a Powershell script from c#