Sam*_*abu 3 powershell strongname powershell-2.0
我正在尝试检查程序集是否是强名称签名.
以下是我的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
}
Run Code Online (Sandbox Code Playgroud)
输出如下.
Sampledll,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 70ea1bb087B4tbed
如果publickeytoken为null,我认为它没有签名.我试图写条件如果条件
$Assembly=Get-AssemblyStrongName $assembly
If ($assembly -contains "null" ) { "assembly is not signed" }
Run Code Online (Sandbox Code Playgroud)
虽然许多exe或dll将publickey作为null但仍然没有显示输出,因为"程序集未签名".
如何检查if条件以查找publickeytoken是否为null?(或组装是否签署)
另一种选择是使用GetPublicKeyToken()方法,该方法返回填充或空字节数组,例如:
function Test-AssemblyStrongNamed($assemblyPath) {
[reflection.assemblyname]::GetAssemblyName($assemblyPath).GetPublicKeyToken().Count -gt 0
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3172 次 |
| 最近记录: |