如下说明是翻译
: help Set-AuthenticodeSignature
产生的帮助信息
.
译者
: Edengundam(
马涛
)
Set-AuthenticodeSignature
大纲
使用验证码签名对
Windows PowerShell
脚本或其他文件进行签名
.
语法
Set-AuthenticodeSignature [-filePath] <string[]> [-certificate] <X509Certificate2> [-includeChain <string>] [-timeStampServer <string>] [-force] [-whatIf] [-confirm] [<CommonParameters>]
详细描述
Set-AuthenticodeSignature cmdlet
向任何支持会话初始化协议
(SIP)
文件添加验证码签名
.
在
Windows PowerShell
脚本文件中
,
签名采用一段指出脚本中最后运行的命令位置的文本信息
.
当时用此
cmdlet
时
,
如果已经有签名信息存在于脚本中
,
该旧签名将会被删除
.
参数
-filePath <string[]>
指定被签名的文件路径
.
强制参数
?
|
true
|
参数位置
?
|
1
|
默认值
|
Null
|
允许从管道绑定输入
?
|
true (
根据值
,
根据属性名
)
|
允许通配符扩展
?
|
true
|
-certificate <X509Certificate2>
指定被用来给脚本签名的证书
.
输入一个包含表示证书的对象的变量或一个取得证书的表达式
.
查找证书使用
Get-PfxCertificate
或
Get-ChildItem.
如果证书不可用
,
或没有代码签名授权
,
命令将会失败
.
强制参数
?
|
true
|
参数位置
?
|
2
|
默认值
|
空
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
-includeChain <string>
确定证书信任链中哪些证书被包含在数字签名中
. "NotRoot"
为默认值
.
合法取值如下
:
·
"Signer":
只包含签名者的证书
.
·
"NotRoot":
除了根颁发机构外
,
证书链中的所有证书
.
·
"All":
证书链中的所有证书
.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
notroot
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
-timeStampServer <string>
使用指定的时间戳服务器来保证向证书添加到文件中的准确时间
.
以字符串形式输入时间戳服务器的
URL.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
-force <SwitchParameter>
在不破坏安全前提下
,
能够避免影响命令成功执行的限制条件
.
例如
: Force
参数能够覆盖具有只读属性的文件或创建路径中的必要成分
,
但是不会改变人和文件的权限
.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
False
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
-whatIf
描述执行此命令将会发生的现象
,
不会真正执行此命令
.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
-confirm
执行命令前提示你进行确认
.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
<
公共参数
>
此命令支持公共参数
: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable.
更多信息
,
输入
, "get-help about_commonparameters".
返回类型
PsSignatureObject
注意
更多信息
,
输入
"Get-Help Set-AuthenticodeSignature -detailed".
需要技术信息
,
输入
"Get-Help Set-AuthenticodeSignature -full".
在将签名信息写入文件之前或在证书验证之后
, PowerShell
中的布尔类型的变量
"SigningApproved"
都会被检查
.
如果该变量没有设置或设置为不是
true
值时
,
方法
ShouldProcess
将会提示用户来确认脚本的签名
.
如果提供了参数
TimeStampServer,
将会为签名使用通过指定
URL
获得的时间戳
.
参数
"IncludeChain"
指出信任链的哪些证书嵌入到签名块中
.
此命令允许的三个参数
:
·
None --
只有签名者的证书将会被编码并嵌入到脚本中
.
·
Notroot --
除了根证书外
,
签名者信任链上的所有证书将会被编码并嵌入到脚本中
.
·
Fullchain --
包括根证书
,
签名者信任链上的所有证书将会被编码并嵌入到脚本中
.
如果需要为该命令提供多个参数
,
请使用逗号进行分隔
.
例如
, "<parameter-name> <value1>, <value2>".
例
1
C:/PS>$cert=Get-ChildItem -FilePath cert:/CurrentUser/my -CodeSigningCert
C:/PS>Set-AuthenticodeSignature PsTestInternet2.ps1 -cert $cert
这些命令从
Windows PowerShell
证书
provider
中取得代码签名的证书
,
并使用它对
Windows PowerShell
脚本进行签名
.
第一个命令使用
Get-Childitem
cmdlet
和
Windows PowerShell
证书
provider
来获得证书仓库子目录
Cert:/CurrentUser/My
中的证书
. (
驱动器
Cert:
是证书
provider
的使用接口
.)
参数
CodeSigningCert
是只有证书
provider
才支持的
,
限制只取得代码签名颁发机构的证书
.
命令将结果保存在变量
$cert
中
.
第二个命令使用了
Set-AuthenticodeSignature cmdlet
来签名叫
PSTestInternet2.ps1
的脚本
.
它使用了参数
FilePath
来指定脚本的名称
,
以及参数
Cert
指示使用存储在变量
$cert
中的证书
.
例
2
C:/PS>$cert = Get-PfxCertificate C:/Test/Mysign.pfx
C:/PS>Set-AuthenticodeSignature -Filepath ServerProps.ps1 -Cert $cert
此命令使用
Get-PfxCertificate
cmdlet
来查找一个代码签名证书并使用它对
Windows PowerShell
脚本进行签名
.
第一个命令使用
Get-PfxCertificate cmdlet
查找
C:/Test/MySign.pfx
证书并将其存储在变量
$cert
中
.
第二个命令
Set-AuthenticodeSignature
用来签名脚本
. Set-AuthenticodeSignature
的参数
FilePath
指出被签名脚本的路径
,
参数
Cert
将包含证书的变量
$cert
传递给
Set-AuthenticodeSignature.
如果证书文件受到密码保护
, Windows PowerShell
将会提示您输入密码
.
例
3
C:/PS>Set-AuthenticodeSignature -filepath c:/scripts/Remodel.ps1 -cert $cert -IncludeChain All -TimeStampServer "http://www.fabrikam.com/TimeManager"
此命令使用第三方时间戳服务器将信任链上包括根颁发机构的证书一起添加到数字签名中
.
命令使用参数
FilePath
指定被签名的脚本位置
,
参数
Cert
指定证书保存在变量
$cert
中
.
通过使用参数
IncludeChain
指定信任链中的所有证书证书
(
包含根颁发机构
),
参数
TimeStampServer
指定了用于验证脚本签名时间的时间戳服务器的
URL.
相关链接
Get-AuthenticodeSignature
Get-PfxCertificate
Get-ExecutionPolicy
Set-ExecutionPolicy
about_signing