PowerShell对脚本的运行有较为严格的控制,见这篇文章:http://281816327.blog.51cto.com/907015/1367866


当设置系统只接受经过证书签名的powershell脚本运行的策略,我们就需要给脚本进行签名;

(1)在CA中申请一个给代码签名的证书;(具体可在网上搜索方法)

使用证书对PowerShell脚本进行签名_签名

(2)将证书导入到本地的操作系统中;(具体可在网上搜索方法)

证书导入后,可在证书管理台中见到;

使用证书对PowerShell脚本进行签名_PowerShell脚本_02

(3)查看并测试当前的脚本运行策略;

A.查看当前Powershell脚本执行的策略为AllSigned;

B.运行一个测试的脚本,提示脚本没有经过签名,拒绝运行;

使用证书对PowerShell脚本进行签名_签名_03

(4)使用"ls cert:\current\my”命令查看正式的Subject; (如果有不明白Cert:的意思可以参考“get-psdrive”命令)

使用证书对PowerShell脚本进行签名_签名_04

(5)使用“$cert=ls cert:\current\my”命令将证书赋给变量$cert;

然后使用“set-authenticodeSignature .\test.ps1”命令给当前路径下的脚本test.ps1经行签名;

当见到Status是“Valid”,即表示签名成功;

使用证书对PowerShell脚本进行签名_PowerShell脚本_05

(6)重复(3)的步骤;

A.查看当前的运行策略为AllSigned;

B.运行当前路径下的脚本,已经成功运行;