function Get-ManifestInfo
{
[CmdletBinding(SupportsShouldProcess = $true)]
param
(
[Parameter(Mandatory = $true,
ValueFromPipeline = $true,
Position = 1)]
$ManifestFile
)
Begin
{
}
Process
{
if ($pscmdlet.ShouldProcess("Target", "Operation"))
{
Trap
{
Write-Host $_.Exception.Message;
Continue
}
# 不是所有的文件都能转换成 XML 的
[xml] $pkg = Get-Content "$ManifestFile"
[string[]]$name = $pkg.assembly.dependency.dependentAssembly.assemblyIdentity.name
[string[]]$version = $pkg.assembly.dependency.dependentAssembly.assemblyIdentity.version
[string[]]$language = $pkg.assembly.dependency.dependentAssembly.assemblyIdentity.language
[string[]]$processorArchitecture = $pkg.assembly.dependency.dependentAssembly.assemblyIdentity.processorArchitecture
[string[]]$publicKeyToken = $pkg.assembly.dependency.dependentAssembly.assemblyIdentity.publicKeyToken
[string[]]$language = ConvertTo-ShortId($language)
$result = @()
for ($i = 0; $i -lt $name.Count; $i++)
{
if ($name[$i].length -gt 40) { $name[$i] = $name[$i].Substring(0, 19) + ".." + $name[$i].substring($name[$i].Length - 19) }
$search = $processorArchitecture[$i] + "_" + $name[$i] + "_" + $publicKeyToken[$i] + "_" + $version[$i] + "_" + $language[$i]
$result0 = dir -path $path -Filter "$search`*" -directory -Name
if ($result0) { $result += $result0 }
else { $result += $search }
}
}
}
End
{
$result
}
}