J'ai une hashtable qui stocke les numéros de version des chemins d'accès aux assemblages. Je veux trouver la clé de la valeur max, que j'ai résolue dans la fonction ci-dessous. Je veux aussi savoir si le nombre de valeur max est supérieur à 1 et le stocker dans une variable. Des idées sur la façon de faire la dernière partie?
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
}
Je suis après un vrai/false si le nombre d'occurrences de max (valeur) est supérieur à 1. Désolé si ma question n'était pas claire. –
En fait, je viens de le résoudre avec '($ dacVersions.GetEnumerator() | where-object {$ _. Value -eq $ latestVersion}). Count' –
@MarkAllison Désolé, j'ai mal lu la question, mis à jour la réponse –