如何生成自签名证书并使用它来签署我的 powershell 脚本?

How do I generate a self-signed certificate and use it to sign my powershell script?

所以我已经 researching/googling 过去 2 个小时了,我几乎快要哭了...

我无法使用 New-SelfSignedCertificate,因为我使用的是 Windows 7。 我无法使用 makecert,因为一个错误不允许我为 Windows 7 安装 SDK,因为它认为我有预发布版本的 .NET 4,但我没有。尝试安装 .NET 4 时通知我有新的或更好的版本。

我尝试了一个我发现的注册表黑客来解决这个问题,不幸的是没有奏效。

我已经下载了这个 https://gallery.technet.microsoft.com/scriptcenter/Self-signed-certificate-5920a7c6#content

但似乎无法完成我实际签署我的脚本所需的所有步骤,以便我可以将它交给其他人安全使用。

我想我已经成功创建了证书(虽然我不确定我是否做对了)。

据我所知,我现在需要为其应用密码或密钥,然后将其导出吗?我仍然不确定我是如何特别签署我的脚本的,所以其他人可以以 'Signed'.

的形式执行它

谢谢大家。

或者,如果有人知道我如何获得相对 .exe 文件中的工作路径,那么所有这些都可能是不必要的?

该脚本作为 .ps1 运行良好,但一旦我使用 PowerGUI 将其编译为 .exe,这些行就不起作用了。

. .\Import-XLS.ps1
$OutFile = ".\TEST$(get-date -Format dd-MM).txt"
$Content = Import-XLS '.\TEST.xlsx'

我反而得到了像 “术语 '.\Import-XLS.ps1' 无法识别为 cmdlet 的名称,以及对 Appdata\Local\Temp\QuestSoftware\PowerGUI\ 文件夹的一些引用。

所以我猜 PowerGUI 正在做一些奇怪的事情,但我不知道如何将 .ps1 转换为 .exe。 根据主要问题的答案,我可能会正式提交 .exe 的新问题。

谢谢大家。

所以我没有使用 PowerGUI 从脚本创建 .exe 文件,所以这有点蒙昧,但我猜它只是没有实现点源外部文件,如果那是唯一的事情阻止您部署代码 为什么不直接将函数从 Import-XLS.ps1 复制到您的脚本主体中?

所以我最终通过结合两件事解决了这个问题。

Split-Path $MyInvocation.MyCommand.Path

[System.AppDomain]::CurrentDomain.BaseDirectory}

我需要同时使用两者,因为前者在 .ps1 中工作,但在编译后的 .exe 中不工作,而后者在编译后的 .exe 中工作,但在 .[=31= 中不工作].

由于PowerGUI编译的.exe路径文件夹名称一致,所以我最后使用了下面的。

$ScriptPath = Split-Path $MyInvocation.MyCommand.Path
if ($ScriptPath -match 'Quest Software') {$ScriptPath = [System.AppDomain]::CurrentDomain.BaseDirectory}

我还将函数包含到 .exe 中(但这不是必需的)。 然后我使用 $OutFile = "$ScriptPath\<Filename>.txt"$Content = Import-XLS "$ScriptPath\<Filename>.xlsx"

这意味着我现在可以使用 .exe 而不是尝试为脚本获取工作证书。同时还能够在它仍然是 .ps1.

时快速测试对其的更改

我希望这对以后使用 PowerGUI 制作 .exe 的其他人也有帮助,他们也需要使用相对路径。

感谢那些提供帮助和建议的人。