Script PowerShell pour retourner les versions du .NET Framework sur une machine ?

Script PowerShell pour retourner les versions du .NET Framework sur une machine ?

Si vous utilisez le registre, vous devez effectuer une recherche recursive pour obtenir la version complete du Framework 4.x. Les reponses precedentes retournent toutes les deux le numero racine sur mon systeme pour .NET 3.0 (ou les numeros WCF et WPF, qui sont imbriques sous 3.0, sont superieurs – je ne peux pas expliquer cela), et ne retournent rien pour 4.0…

EDIT : Pour .Net 4.5 et versions ulterieures, cela a legerement change a nouveau, il existe donc maintenant un article MSDN ici expliquant comment convertir la valeur Release en numero de version .Net, c’est un veritable casse-tete :frowning:

Cela me semble correct (notez que cela affiche des numeros de version separes pour WCF et WPF sur 3.0. Je ne sais pas a quoi cela est du). Cela affiche egalement Client et Full sur 4.0 (si vous avez les deux d’installes) :

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
Get-ItemProperty -name Version,Release -EA 0 |
Where { $_.PSChildName -match '^(?!S)\p{L}'} |
Select PSChildName, Version, Release

Base sur l’article MSDN, vous pouvez construire une table de correspondance et retourner le numero de version marketing du produit pour les versions apres 4.5 :

$Lookup = @{
    378389 = [version]'4.5'
    378675 = [version]'4.5.1'
    378758 = [version]'4.5.1'
    379893 = [version]'4.5.2'
    393295 = [version]'4.6'
    393297 = [version]'4.6'
    394254 = [version]'4.6.1'
    394271 = [version]'4.6.1'
    394802 = [version]'4.6.2'
    394806 = [version]'4.6.2'
    460798 = [version]'4.7'
    460805 = [version]'4.7'
    461308 = [version]'4.7.1'
    461310 = [version]'4.7.1'
    461808 = [version]'4.7.2'
    461814 = [version]'4.7.2'
    528040 = [version]'4.8'
    528049 = [version]'4.8'
}

# Pour le seul vrai framework (derniere version .NET 4x), changez le filtre Where-Object
# en PSChildName -eq "Full" :
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP'

(Reponse tronquee)