Config/Test-DotNet452.ps1
Configuration Net452Install { Import-DSCResource -ModuleName PSDesiredStateConfiguration node "localhost" { LocalConfigurationManager { RebootNodeIfNeeded = $true } Script Install_Net_4.5.2 { SetScript = { $SourceURI = "https://download.microsoft.com/download/B/4/1/B4119C11-0423-477B-80EE-7A474314B347/NDP452-KB2901954-Web.exe" $FileName = $SourceURI.Split('/')[-1] $BinPath = Join-Path $env:SystemRoot -ChildPath "Temp\$FileName" if (!(Test-Path $BinPath)) { Invoke-Webrequest -Uri $SourceURI -OutFile $BinPath } write-verbose "Installing .Net 4.5.2 from $BinPath" write-verbose "Executing $binpath /q /norestart" Start-Sleep 5 Start-Process -FilePath $BinPath -ArgumentList "/q /norestart" -Wait -NoNewWindow Start-Sleep 5 Write-Verbose "Setting DSCMachineStatus to reboot server after DSC run is completed" $global:DSCMachineStatus = 1 } TestScript = { [int]$NetBuildVersion = 379893 if (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' | ForEach-Object{$_ -match 'Release'}) { [int]$CurrentRelease = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full').Release if ($CurrentRelease -lt $NetBuildVersion) { Write-Verbose "Current .Net build version is less than 4.5.2 ($CurrentRelease)" return $false } else { Write-Verbose "Current .Net build version is the same as or higher than 4.5.2 ($CurrentRelease)" return $true } } else { Write-Verbose ".Net build version not recognised" return $false } } GetScript = { if (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' | ForEach-Object{$_ -match 'Release'}) { $NetBuildVersion = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full').Release return $NetBuildVersion } else { Write-Verbose ".Net build version not recognised" return ".Net 4.5.2 not found" } } } } } Net452Install -OutputPath $env:SystemDrive:\DSCconfig Set-DscLocalConfigurationManager -ComputerName localhost -Path $env:SystemDrive\DSCconfig -Verbose Start-DscConfiguration -ComputerName localhost -Path $env:SystemDrive:\DSCconfig -Verbose -Wait -Force |