0

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

如果我将 Powershell 执行策略设置为“绕过”,则 SQL 作业可以工作。但是,如果我将其设置为“远程签名”,则无法说明执行策略设置不正确。但是,如果我从 CMD 窗口启动脚本,它会正确运行。服务器是 64 位的,所以我确保 32 位和 64 位 shell 的执行策略都设置为“远程签名”。而且,我在 IE 中将远程服务器 UNC 路径设置为受信任的 Intranet 站点(发现 Powershell 将本地 UNC 路径视为 http 路径,除非在 IE 中设置)。

就像我说的,它运行正确,如果从 CMD 窗口中手动启动,并且执行策略设置为远程签名,并且如果执行策略设置为绕过,则如果 SQL 作业启动,则它可以正常运行。仅当它从 SQL 启动并且执行策略设置为远程签名时才会失败。

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

有什么想法吗?

4

2 回答 2

0

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

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

于 2012-01-16T21:18:25.840 回答
0

为了让一些遗留应用程序与 Powershell 一起使用,我发现自己正在编写小的 .bat “引导”脚本,其中只包含类似powershell.exe C:\Scripts\MyScript.ps1

无论如何都不是一个创造性的、优雅的或“解决问题”的解决方案,但如果它可以从 CMD 工作,那么你可以尝试这个只是为了让它尽快工作。

于 2012-01-17T01:37:45.953 回答