【问题标题】:How to extract publickeytoken using powershell?如何使用powershell提取publickeytoken?
【发布时间】:2013-03-04 09:15:34
【问题描述】:

我正在尝试检查程序集是否是强名称签名的。

以下是我的 powershell 脚本

function Get-AssemblyStrongName($assemblyPath)
{
    [System.Reflection.AssemblyName]::GetAssemblyName($assemblyPath).FullName 
}

$File = Get-ChildItem -Path $args[0] -Include @("*.dll","*.exe") -Recurse

Foreach ($f in $File)
{
  $assembly=$f.FullName

  Get-AssemblyStrongName $assembly

}

输出如下所示。

Sampledll,版本=1.0.0.0,文化=中性, PublicKeyToken=70ea1bb087B4tbed

如果 publickeytoken 为空,我认为它没有签名。我试图写 if 条件像

$Assembly=Get-AssemblyStrongName $assembly
If ($assembly -contains "null" ) { "assembly is not signed" }

尽管许多 exe 或 dll 的 publickey 为 null,但它仍然没有显示“程序集未签名”的输出。

如何通过 if 条件判断 publickeytoken 是否为空? (或程序集是否已签名)

【问题讨论】:

标签: powershell powershell-2.0 strongname


【解决方案1】:

另一种选择是使用 GetPublicKeyToken() 方法,该方法返回填充或空字节数组,例如:

function Test-AssemblyStrongNamed($assemblyPath) {
    [reflection.assemblyname]::GetAssemblyName($assemblyPath).GetPublicKeyToken().Count -gt 0
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多