PC_Aide

check_net_framework_installed.ps1

Sep 22nd, 2018
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <#
  2.     Script Name : Get-NetFrameworkVersion.ps1
  3.     Description : This script reports the various .NET Framework versions installed on the local or a remote computer.
  4.     Author      : Martin Schvartzman
  5.     Last Update : July-2018
  6.     Keywords    : NETFX, Registry
  7.     Reference   : https://msdn.microsoft.com/en-us/library/hh925568
  8.  
  9.     O/P         : http://pix.toile-libre.org/upload/original/1537652518.png
  10. #>
  11.  
  12. param(
  13.     [string]$ComputerName = $env:COMPUTERNAME
  14. )
  15.  
  16. $dotNetRegistry = 'SOFTWARE\Microsoft\NET Framework Setup\NDP'
  17. $dotNet4Registry = 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full'
  18. $dotNet4Builds = @{
  19.     '30319'  = @{ Version = [System.Version]'4.0'                                                     }
  20.     '378389' = @{ Version = [System.Version]'4.5'                                                     }
  21.     '378675' = @{ Version = [System.Version]'4.5.1'   ; Comment = '(8.1/2012R2)'                      }
  22.     '378758' = @{ Version = [System.Version]'4.5.1'   ; Comment = '(8/7 SP1/Vista SP2)'               }
  23.     '379893' = @{ Version = [System.Version]'4.5.2'                                                   }
  24.     '380042' = @{ Version = [System.Version]'4.5'     ; Comment = 'and later with KB3168275 rollup'   }
  25.     '393295' = @{ Version = [System.Version]'4.6'     ; Comment = '(Windows 10)'                      }
  26.     '393297' = @{ Version = [System.Version]'4.6'     ; Comment = '(NON Windows 10)'                  }
  27.     '394254' = @{ Version = [System.Version]'4.6.1'   ; Comment = '(Windows 10)'                      }
  28.     '394271' = @{ Version = [System.Version]'4.6.1'   ; Comment = '(NON Windows 10)'                  }
  29.     '394802' = @{ Version = [System.Version]'4.6.2'   ; Comment = '(Windows 10 1607)'                 }
  30.     '394806' = @{ Version = [System.Version]'4.6.2'   ; Comment = '(NON Windows 10)'                  }
  31.     '460798' = @{ Version = [System.Version]'4.7'     ; Comment = '(Windows 10 1703)'                 }
  32.     '460805' = @{ Version = [System.Version]'4.7'     ; Comment = '(NON Windows 10)'                  }
  33.     '461308' = @{ Version = [System.Version]'4.7.1'   ; Comment = '(Windows 10 1709)'                 }
  34.     '461310' = @{ Version = [System.Version]'4.7.1'   ; Comment = '(NON Windows 10)'                  }
  35.     '461808' = @{ Version = [System.Version]'4.7.2'   ; Comment = '(Windows 10 1803)'                 }
  36.     '461814' = @{ Version = [System.Version]'4.7.2'   ; Comment = '(NON Windows 10)'                  }
  37. }
  38.  
  39. foreach($computer in $ComputerName) {
  40.     if($regKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computer)) {
  41.         if ($netRegKey = $regKey.OpenSubKey("$dotNetRegistry")) {
  42.             foreach ($versionKeyName in $netRegKey.GetSubKeyNames()) {
  43.                 if ($versionKeyName -match '^v[123]') {
  44.                     $versionKey = $netRegKey.OpenSubKey($versionKeyName)
  45.                     $version = [System.Version]($versionKey.GetValue('Version', ''))
  46.                     New-Object -TypeName PSObject -Property ([ordered]@{
  47.                             ComputerName = $computer
  48.                             Build        = $version.Build
  49.                             Version      = $version
  50.                             Comment      = ''
  51.                         })
  52.                 }
  53.             }
  54.         }
  55.  
  56.         if ($net4RegKey = $regKey.OpenSubKey("$dotNet4Registry")) {
  57.             if(-not ($net4Release = $net4RegKey.GetValue('Release'))) {
  58.                 $net4Release = 30319
  59.             }
  60.             New-Object -TypeName PSObject -Property ([ordered]@{
  61.                     ComputerName = $Computer
  62.                     Build        = $net4Release
  63.                     Version      = $dotNet4Builds["$net4Release"].Version
  64.                     Comment      = $dotNet4Builds["$net4Release"].Comment
  65.                 })
  66.         }
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment