Private/Get-DotNetFrameworkVersion.ps1
function private:Get-DotNetFrameworkVersion { <# .EXTERNALHELP HelperFunctions.psm1-Help.xml #> [CmdletBinding()] [OutputType([System.Object])] param ( [Parameter(Mandatory = $false, Position = 0)] [String]$ComputerName = $env:COMPUTERNAME ) Begin { $dotNetRegistry = 'SOFTWARE\Microsoft\NET Framework Setup\NDP' $dotNet4Registry = 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' } process { foreach ($Computer in $ComputerName) { $regKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Computer) if ($regKey) { if ($netRegKey = $regKey.OpenSubKey("$dotNetRegistry")) { foreach ($versionKeyName in $netRegKey.GetSubKeyNames()) { if ($versionKeyName -match '^v[123]') { $versionKey = $netRegKey.OpenSubKey($versionKeyName) $version = [version]($versionKey.GetValue('Version', '')) New-Object -TypeName PSObject -Property @{ ComputerName = $Computer NetFXBuild = $version.Build NetFXVersion = $version.Major + '.' + $version.Minor } | Select-Object ComputerName, NetFXBuild, NetFXVersion } } } if ($net4RegKey = $regKey.OpenSubKey("$dotNet4Registry")) { if (-not ($net4Release = $net4RegKey.GetValue('Release'))) { $net4Release = 378389 } if (-not ($net4Version = $net4RegKey.GetValue('Version'))) { $net4Version = '4.0.0' } New-Object -TypeName PSObject -Property @{ ComputerName = $Computer NetFXBuild = $net4Release NetFXVersion = $net4Version } | Select-Object ComputerName, NetFXBuild, NetFXVersion } } else { New-Object -TypeName PSObject -Property @{ ComputerName = $Computer NetFXBuild = "" NetFXVersion = "Error retrieving information." } | Select-Object ComputerName, NetFXBuild, NetFXVersion } } } end {} }#end function Get-DotNetFrameworkVersion |