【发布时间】: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 是否为空? (或程序集是否已签名)
【问题讨论】:
-
将
-contains更改为-match。或者使用`[System.Reflection.AssemblyName]::GetAssemblyName($assemblypath).getpublickeytoken()获取token值(bytearray)
标签: powershell powershell-2.0 strongname