我有一台安装了 Sql Server 2008 r2 的 Windows 2008 r2 服务器。我有一个 Sql Server Agent,它尝试运行 Powershell 作业,但失败了:-
Message
Executed as user: FooServer\SqlServerUser.
A job step received an error at line 1 in a PowerShell script.
The corresponding line is '& '\\polanski\Backups\Database\7ZipFooDatabases.ps1''
Correct the script and reschedule the job. The error information returned
by PowerShell is: 'File \\polanski\Backups\Database\7ZipFooDatabases.ps1
cannot be loaded.
The file \\polanski\Backups\Database\7ZipFooDatabases.ps1 is
not digitally signed.
The script will not execute on the system.
Please see "get-help about_signing" for more details.. '.
Process Exit Code -1.
The step failed.
好的。所以我在该服务器上运行 Powershell,然后将执行策略设置为不受限制。要检查...
PS C:\Users\theUser> Get-ExecutionPolicy
Unrestricted
PS C:\Users\theUser>
很酷 :) 但是它还是不起作用 :(
好的...当我尝试从命令行运行 powershell 时发生了什么......
PS C:\Users\justin.adler> .'\polanski\Backups\Database\7ZipMotorshoutDatabases.ps1'
Security Warning
Run only scripts that you trust. While scripts from the Internet can be useful,
this script can potentially harm your computer.
Do you want to run \\polanski\Backups\Database\7ZipFooDatabases.ps1?
[D] Do not run [R] Run once [S] Suspend [?] Help (default is "D"):
呃.....我不是已经告诉服务器可以运行任何文件了吗?
请注意该文件位于...
\\polanski\Backups\Database\
那么有人可以提出一些建议吗?
答案1
看起来运行 powershell 的 SQL Agent 作业运行 sqlps “SQL Server Powershell”控制台而不是本机 powershell.exe ——是否有可能在该环境中执行策略设置不同?
作为最佳测试,请打开 SQL Management Studio 并右键单击服务器实例名称,然后选择启动 Powershell,然后在 SQL Server Powershell 窗口中运行 Get-ExecutionPolicy。我不太熟悉这个主机,但它可能使用不同的执行策略。
此外,如果您以 SQL Agent 使用的同一帐户运行手动 powershell 测试,这将有助于排除故障(因为您可以使用组策略设置每个用户的执行策略)。因此,要么以“FooServer\SqlServerUser”身份运行 SQLPS 并进行测试,要么将 SQL Agent 服务更改为暂时以您的用户帐户运行,以消除不同的用户设置。
答案2
该安全警告不是由执行策略设置引起的,而是IE 增强安全配置. 脚本的 UNC 路径 ( \\polanski\Backups\Database\
) 被视为“Internet”位置,并且由于 Internet 位置的安全级别默认为“高”,因此会发出安全警告。
因此,要么polanski
在 IE 中添加“Intranet”站点区域,要么禁用 IE ESC 安全警告:
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap]
"UNCAsIntranet"=dword:00000000
答案3
答案4
我遇到了类似的问题并在 stackoverflow 上发布了这个问题。
我发现 PoSH 执行策略设置与 IE 安全权限相关,并且为了使用 remotesigned,您必须将远程服务器 UNC 路径添加为 IE 中的受信任站点,我已经这样做了。但是,我只在那台机器上的我的 IE 配置文件上执行了此操作。SQL 代理在我们为 SQL 服务创建的网络帐户上运行。我必须使用该帐户登录服务器,并将 UNC 路径添加到该 IE 配置文件。
我会检查一下这是否有帮助。