0

我已经研究了一段时间的 Powershell 脚本,该脚本旨在供我个人(在我的本地计算机上)和我的域内和域外的其他人使用。

问题是,当我以外的其他人尝试运行脚本时,他们会遇到以下错误:

The file C:\my_script.ps1 cannot be loaded. The execution of scripts is disabled on this system. Please see "Get-Help about_signing" for more details.

我以为我已经通过更改其他员工工作站上的策略以允许在脚本本身内进行远程签名来解决此问题,但是根据此链接,我需要一些更强大的东西。

由于这个想法是允许它在内部和外部机器上独立运行,我宁愿不强制脚本将内容更改为不受限制。还有其他选择吗?我可以用其他方式(有人推荐一个 .NET 容器)项目或其他方式来结束它,让它运行得更干净、更独立吗?

4

1 回答 1

2

我不确定我是否理解你的问题。您可以在不想执行脚本的机器上使用 makecert:

@echo off
makecert -n "CN=PowerShell Local Certificate Root" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root -sr LocalMachine
pause
makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer

然后,签署你的脚本:

$cert = @(Get-ChildItem cert:CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature <your script path> $cert | Out-Null

“自包含”部分不应该是一个问题。

于 2013-05-11T12:43:03.723 回答