Powershell下载SSRS报告

时间:2015-05-18 21:16:58

标签: powershell reporting-services

我们正在使用SSRS生成发布到内部托管的网络服务器的数据库报告。然后,我编写了一个PowerShell脚本,定期运行并以PDF格式下载报告。

我已经让它以管理员身份运行了。但出于安全考虑,自动化任务必须作为通用域服务帐户运行。

我用我的帐户下载PDF的代码是:

$this->Time->timeAgoInWords

当我将此代码作为服务帐户运行时,出现500内部服务器错误。我尝试用以下代码替换第二行代码:

 $webClient = New-Object System.Net.WebClient
 $webClient.UseDefaultCredentials = $TRUE

 $webClient.DownloadFile($ssrsURL, $filePath)

当我尝试这个时,我收到401 Unauthorized错误。即使我在代码中输入的用户名/密码是我自己的,当我通过IE登录到网络服务器时也能正常工作。

答案可能在我的代码,域/本地安全策略或SSRS安全设置中......

可能正确方向的一些问题是:

  1. 我可以在PowerShell中尝试哪些其他身份验证方法
  2. 有没有人知道我可以尝试更改的任何IIS / SSRS设置?
  3. 允许使用哪些域或本地安全策略" UseDefaultCredentials"在我的帐户下运行时工作,但不是设置服务帐户吗?
  4. 提前感谢任何想法。

1 个答案:

答案 0 :(得分:0)

最后想出来......它与使用SSRS进行身份验证无关。我的第一个代码段工作正常。

问题在于底层数据库的权限。我们有五个报告,我突然发现PowerShell脚本可以使用服务帐户下载5个报告中的4个。从来没有注意到因为我总是在同一份报告上测试...

访问SSRS日志文件以查看最后一个文件无法正常工作的原因 - 服务帐户无法访问特定报告从中提取数据的数据库。因此500错误而不是401错误。