Ich habe eine Hashtabelle, die Versionsnummern von Pfaden zu Assemblys speichert. Ich möchte den Schlüssel des Maximalwertes finden, den ich in der folgenden Funktion gelöst habe. Ich möchte auch herausfinden, ob die Anzahl der maximalen Werte größer als 1 ist und diese in einer Variablen speichern. Irgendwelche Ideen, wie man den letzten Teil macht?
Function Get-LatestDacFxPath
{
[cmdletbinding()]
$knownPaths = (
'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120',
'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130',
'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\140',
'C:\Program Files (x86)\Microsoft SQL Server\120\DAC\bin',
'C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin',
'C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin',
'C:\Program Files (x86)\NuGet\Packages\Microsoft.Data.Tools.Msbuild\lib\net40'
)
$dacAssembly = 'Microsoft.SqlServer.Dac.dll'
[hashtable]$dacVersions = @{}
foreach($dacPacPath in $knownPaths)
{
if(Test-Path($dacPacPath)) {
$dacVersions[$dacPacPath] = (Get-ItemProperty -Path (Join-Path $dacPacPath $dacAssembly)).VersionInfo.ProductVersion
}
}
$PathOfLatestVersion = ($dacVersions.GetEnumerator() | sort value -Descending | select -First 1).Key
$LatestVersion = ($dacVersions.GetEnumerator() | sort value -Descending | select -First 1).Value
}
ich nach einem wahren bin/false, ob die Anzahl der Vorkommen von max (Wert) größer als 1 ist. Sorry, wenn meine Frage nicht klar war. –
Eigentlich habe ich es nur mit '($ dacVersions.GetEnumerator() | where-object {$ _. Wert -eq $ latestVersion}) gelöst. Count' –
@MarkAllison Sorry, ich habe die Frage falsch gelesen, aktualisierte Antwort –