需要帮助尝试允许我的远程 PowerShell 脚本在我的 Windows 2008 r2 服务器上运行

需要帮助尝试允许我的远程 PowerShell 脚本在我的 Windows 2008 r2 服务器上运行

我有一台安装了 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

尝试

Set-ExecutionPolicy Bypass 

那应该可以

-- 绕过:没有任何阻止,也没有任何警告或提示。

来源

答案4

我遇到了类似的问题并在 stackoverflow 上发布了这个问题。

https://stackoverflow.com/questions/8885949/powershell-remotesigned-policy-not-working-with-sql-agent-job-but-working-if-ru

我发现 PoSH 执行策略设置与 IE 安全权限相关,并且为了使用 remotesigned,您必须将远程服务器 UNC 路径添加为 IE 中的受信任站点,我已经这样做了。但是,我只在那台机器上的我的 IE 配置文件上执行了此操作。SQL 代理在我们为 SQL 服务创建的网络帐户上运行。我必须使用该帐户登录服务器,并将 UNC 路径添加到该 IE 配置文件。

我会检查一下这是否有帮助。

相关内容