208 votes

Powershell pour renvoyer des versions de .NET Framework sur une machine?

Ma première hypothèse est quelque chose impliquant WMI. Est-ce que quelqu'un sait mieux?

Clarification [Modifier avant le changement de titre]: One-Liner ne renvoie que la dernière version pour chaque installation de .NET [sur chaque ligne].

390voto

Jaykul Points 6484

Si vous allez utiliser le registre, vous devez répéter afin d'obtenir la version complète pour le Framework 4.0. Le plus tôt les réponses de retourner le nombre de racines sur mon système .Net 3.0 (où la WCF et WPF numéros, qui sont imbriqués sous 3.0, sont plus élevés -- je ne peux pas expliquer qu'), et ne retourne rien pour la version 4.0 ...

Cela ressemble le droit de me (notez que les sorties de séparer les numéros de version de la WCF ET WPF sur la 3.0, je ne sais pas ce qui est à peu près). Il a également des sorties à la fois Client et 4.0 (si vous en avez installé):

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

28voto

Jason Stangroome Points 2264
 gci 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' | 
sort pschildname -des                                  | 
select -fi 1 -exp pschildname
 

modifier
cette réponse ne renvoie pas 4.5 si cela est installé, la réponse ci-dessous de @Jaykul et l'utilisation de recurse le fait.

25voto

Richard Points 54016
 [environment]::Version
 

Vous donne une instance de Version pour le CLR utilisé par la copie actuelle de PSH (comme documenté ici ).

15voto

Desmond Lee Points 31

Syntaxe correcte:

[System.Runtime.InteropServices.RuntimeEnvironment]::GetSystemVersion()
#or
$PSVersionTable.CLRVersion

L' GetSystemVersion de la fonction retourne une chaîne de caractères comme ceci:

v2.0.50727        #PowerShell v2.0 in Win 7 SP1

ou comme ceci

v4.0.30319        #PowerShell v3.0 (Windows Management Framework 3.0) in Win 7 SP1

$PSVersionTable est en lecture seul objet. Le CLRVersion propriété est structuré un numéro de version comme ceci:

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      30319  18444   

1voto

Joey Points 148544

Pas beau. Certainement pas jolie:

 ls $Env:windir\Microsoft.NET\Framework | ? { $_.PSIsContainer } | select -exp Name -l 1
 

Cela peut ou peut ne pas fonctionner. Mais en ce qui concerne la dernière version, cela devrait être assez fiable, car il existe essentiellement des dossiers vides pour les anciennes versions (1.0, 1.1) mais pas pour les plus récents - ceux-ci n'apparaissent que lorsque le cadre approprié est installé.

Pourtant, je soupçonne qu'il doit y avoir une meilleure façon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X