ฉันจะติดตั้ง. NET 4.5.2 ผ่าน PowerShell DSC ได้อย่างไร


15

ฉันสามารถติดตั้ง. NET Framework 4.5 บน Windows Server 2012 R2 โดยใช้ PowerShell DSC ผ่านทางคุณสมบัติ WindowsFeature และคุณสมบัติ NET-Framework-45-Core คำถามของฉันคือฉันจะใช้ PowerShell DSC เพื่อให้แน่ใจว่าติดตั้ง. NET 4.5.2 ได้อย่างไร


คุณจบลงด้วยการใช้ DSC สำหรับสิ่งนี้หรืออย่างอื่น?
Steven Liekens

Chocolatey มีโปรแกรมติดตั้งสำหรับ 4.5.2 ซึ่งเป็น PowerShell เช่นเดียวกัน คุณตรวจสอบการใช้ DSC ด้วย Chocolatey หรือไม่? chocolatey.org/packages/DotNet4.5.2
Steven Liekens

คำตอบ:


12

ไม่แน่ใจว่า 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

ตกลงกัน; คำตอบที่ดี ฉันต้องการพูดถึงสิ่งนี้ยังทำงานผ่าน Chef และdsc_scriptทรัพยากร
Jason Capriotti

ฉันยังยืนยันว่าสามารถใช้งานได้กับ. net 4.7 ด้วย NetBuildVersion = 461310 และคว้าdownload.microsoft.com/download/A/E/A/…
JohnnyFun

2

ตามบทความ Microsoft Technet นี้ชื่อของคุณสมบัติที่จะติดตั้งควรเป็นหนึ่งในผลลัพธ์ของคำสั่งGet-WindowsFeature ดังนั้นหาก. NET 4.5.2 ไม่ปรากฏในรายการคุณไม่สามารถมั่นใจได้ว่าติดตั้งผ่านทาง DSC

ชื่อระบุชื่อของบทบาทหรือคุณสมบัติที่คุณต้องการให้แน่ใจว่ามีการเพิ่มหรือลบ นี่เหมือนกับชื่อคุณสมบัติจาก Get-WindowsFeature cmdlet และไม่ใช่ชื่อที่แสดงของบทบาทหรือคุณสมบัติ

ดังนั้นฉันคิดว่าคุณจะต้องติดตั้งเวอร์ชันหลักผ่านทาง DCS (4.5) แล้วหาทางออกที่ดีที่สุดในการอัปเดตเป็น 4.5.2


ดูเหมือนว่าการกำกับดูแลที่สำคัญพอสมควร ใหม่ PowerShell DSC สามารถติดตั้งซอฟต์แวร์ใหม่เหมือนอายุสองปีครึ่ง!
Mark

1
มันไม่ใช่การกำกับดูแล รันไทม์. NET 4.5.2 ไม่ใช่คุณลักษณะของ Windows ดังนั้นจึงไม่สามารถติดตั้งได้โดยใช้ทรัพยากร WindowsFeature สามารถใช้ได้ผ่าน Windows Update หรือเป็นการดาวน์โหลดแยกต่างหาก สคริปต์จะต้องดาวน์โหลดและรันโปรแกรมติดตั้งที่เหมาะสม
Panagiotis Kanavos
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.