在PowerShell脚本中获取程序集文件属性的指定元数据特性的方法——AssemblyMetadataAttribute
在PowerShell脚本中获取程序集文件属性的指定元数据特性的方法——AssemblyMetadataAttribute
<#
.SYNOPSIS
获取程序集文件属性的指定元数据特性
.DESCRIPTION
获取程序集文件属性的指定元数据特性
.PARAMETER filePath
程序集文件路径
.PARAMETER name
元数据名称
.EXAMPLE
PS C:\> Get-AssemblyMetadata -filePath 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.4\System.Text.Json.dll' -name 'RepositoryUrl'
https://github.com/dotnet/runtime
.NOTES
Additional information about the function.
#>
function Get-AssemblyMetadata
{
[OutputType([string])]
param
(
[Parameter(Mandatory = $true, HelpMessage = '程序集文件路径')]
[Alias('p')]
[string]$filePath,
[Parameter(Mandatory = $true, HelpMessage = '元数据名称')]
[Alias('n')]
[string]$name
)
if (-not (Test-Path $filePath))
{
return ""
}
## $asm = [System.Reflection.Assembly]::LoadFile($filePath)
## $data = $asm.CustomAttributes
$buffer = [System.IO.File]::ReadAllBytes($filePath)
$asm = [System.Reflection.Assembly]::Load($buffer)
$data = [System.Reflection.CustomAttributeData]::GetCustomAttributes($asm)
foreach ($attr in $data)
{
if ($attr.AttributeType.Name -eq 'AssemblyMetadataAttribute' -and $attr.ConstructorArguments.Count -eq 2)
{
$nameArg = $attr.ConstructorArguments[0];
$valueArg = $attr.ConstructorArguments[1];
if ($nameArg.Value -eq $name)
{
return $valueArg.Value
}
}
}
return ""
}
使用示例
PS C:\> Get-AssemblyMetadata -filePath 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.4\System.Text.Json.dll' -name 'RepositoryUrl'
https://github.com/dotnet/runtime
作者:VAllen
出处:http://www.cnblogs.com/vallen
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
唯有偏执者得以生存。
出处:http://www.cnblogs.com/vallen
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
唯有偏执者得以生存。