PowerShell DSC를 통해 .NET 4.5.2를 어떻게 설치합니까?


15

WindowsFeature 리소스 및 NET-Framework-45-Core 기능을 통해 PowerShell DSC를 사용하여 Windows Server 2012 R2에 .NET Framework 4.5를 설치할 수 있습니다. 제 질문은 PowerShell DSC를 어떻게 사용하여 .NET 4.5.2가 설치되었는지 확인하는 것입니다.


이것이나 다른 것에 DSC를 사용하게 되었습니까?
Steven Liekens

Chocolatey에는 4.5.2 용 설치 프로그램이 있으며 이는 PowerShell 기반이기도합니다. Chocolatey와 함께 DSC를 사용하여 조사한 적이 있습니까? chocolatey.org/packages/DotNet4.5.2
Steven Liekens 2016 년

답변:


13

이것이 OP에 여전히 필요한지 확실하지 않지만 최근에 똑같은 문제가 발생하여 2012 R2 서버에서 패키지 리소스 만 사용하려고 할 때 설치 프로그램 자체에서 많은 문제가 발견되었습니다. 스크립트 리소스를 작성하고 웹 설치 프로그램을 전체 패키지가 압축 해제에 실패하여 매우 일반적인 오류로 계속 사용되어야했습니다.

어쨌든, 여기에 내가 끝낸 작업 스크립트 리소스가 있습니다.

Configuration Net452Install
{
    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"
                Sleep 5
                Start-Process -FilePath $BinPath -ArgumentList "/q /norestart" -Wait -NoNewWindow            
                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' | %{$_ -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' | %{$_ -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

정답은,이 방법은 .net 4.6.1에서도 작동합니다. 다양한 기존 DSC 통합 (chocolatey, cDotNetInstaller 등)을 시도했지만 모두 4.6.1 설치 프로그램에서 실패했습니다. 이것이 처음 일한 것입니다. 명성.
swannee 2016 년

합의 좋은 대답입니다. 나는 이것이 Chef와 dsc_script리소스를 통해 작동한다고 언급하고 싶습니다 .
Jason Capriotti

또한 NetBuildVersion = 461310 및 download.microsoft.com/download/A/E/A/…를
JohnnyFun

2

이 Microsoft Technet 기사 에 따르면 설치할 기능의 이름은 Get-WindowsFeature 명령의 결과 중 하나 여야합니다 . 따라서 .NET 4.5.2가 목록에 나타나지 않으면 DSC를 통해 설치되었는지 확인할 수 없습니다.

이름 추가하거나 제거 할 역할 또는 기능의 이름을 나타냅니다. 이는 역할 또는 기능의 표시 이름이 아니라 Get-WindowsFeature cmdlet의 Name 속성과 동일합니다.

따라서 DCS (4.5)를 통해 주요 버전을 설치 한 다음 4.5.2로 업데이트하는 가장 좋은 솔루션을 찾아야한다고 생각합니다.


상당히 중요한 감독 인 것 같습니다. 새로운 PowerShell DSC는 2 년 반 정도의 새로운 소프트웨어를 설치할 수 있습니다!
Mark

1
감독이 아닙니다. .NET 4.5.2 런타임은 Windows 기능 이 아니므 로 WindowsFeature 리소스를 사용하여 설치할 수 없습니다. Windows Update 또는 별도의 다운로드로 제공됩니다. 스크립트는 적절한 설치 프로그램을 다운로드하여 실행해야합니다.
Panagiotis Kanavos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.