Set-AuthenticodeSignature 帮助信息

来源:互联网 发布:网络文明用语 编辑:程序博客网 时间:2024/05/21 18:47
 
如下说明是翻译: 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-PfxCertificateGet-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 cmdletWindows 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 
 
  
原创粉丝点击