Powershell remotesigned策略不使用SQL代理Job,但如果“手动”运行则工作

时间:2012-01-16 20:37:30

标签: sql-server sql-server-2008 powershell powershell-v2.0 sql-agent

我有一个使用Powershell脚本执行数据库备份的SQL 2008作业。 SQL作业中的每个步骤都是“操作系统(CmdExec)”类型。每个步骤都会启动执行SQL备份和其他操作的powershell脚本。该脚本存在于远程服务器上,因此如果我们需要进行更改,我们只需要进行一次。

如果我将Powershell执行策略设置为“Bypass”,则SQL作业可以正常工作。但是,如果我将其设置为“远程签名”,则表示执行策略未正确设置失败。但是,如果我从CMD窗口启动脚本,它将正确运行。服务器是64位,所以我确保32位和64位shell的执行策略都设置为“remotesigned”。并且,我将远程服务器UNC路径设置为IE中的可信内部网站点(发现Powershell处理本地UNC路径,如http路径,除非在IE中设置)。

就像我说的那样,它正确运行我手动启动,如果从执行策略设置为远程签名的CMD窗口关闭,如果执行策略设置为绕过,如果关闭,则SQL作业将关闭。它只有在从SQL启动并且执行策略设置为remotesigned时才会失败。

它运行了一年没有出现Powershell执行策略设置绕过的问题,但我被告知要将执行策略设置为现在重新签名。保持旁路不再是一种选择。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

听起来运行作业的凭据与登录凭据不同。

您可能必须更改代理作业用户的权限,以允许powershell脚本按预期运行。

答案 1 :(得分:0)

为了让一些遗留应用程序与Powershell一起玩,我发现自己编写的小.bat“bootstrap”脚本只包含powershell.exe C:\Scripts\MyScript.ps1

之类的内容

无论如何都不是创意,优雅或“解决问题”的解决方案,但如果它可以从CMD中运行,那么您可以尝试这样做,以尽快使其工作。