在 Windows PowerShell 中以数字方式对脚本进行签名
在生产环境中使用 Windows PowerShell 脚本时,应有一个审批流程来验证这些脚本是否已经过测试。 审批流程将因组织规模和官僚机构级别而异,但都应该有审批流程。
将生产环境中使用的脚本的审批流程规范化的一种方法是以数字方式对脚本进行签名并使用 AllSigned 脚本执行策略。 实现此策略时,必须使用新的数字签名更新任何修改后的脚本。 这可以防止管理员或其他员工进行随机脚本更改。 例如,如果你的组织有一组用于管理 Active Directory 域服务 (AD DS) 用户的已批准的脚本,则此配置将阻止支持人员有意或无意修改脚本。
若要向脚本添加数字签名,必须具有运行此脚本的所有计算机信任的代码签名证书。 可以从公共证书颁发机构获取受信任的代码签名证书。 还可以从受计算机信任的内部证书颁发机构获取代码签名证书。
使用 Set-AuthenticodeSignature cmdlet 添加数字签名,如以下代码所示:
$cert = Get-ChildItem -Path "Cert:\CurrentUser\My" -CodeSigningCert
Set-AuthenticodeSignature -FilePath "C:\Scripts\MyScript.ps1" -Certificate $cert