मैं PowerShell DSC के माध्यम से .NET 4.5.2 कैसे स्थापित कर सकता हूं?


15

मैं Windows फ्रेमवर्क संसाधन और नेट-फ्रेमवर्क-45-कोर सुविधा के माध्यम से PowerShell DSC का उपयोग करके Windows Server 2012 R2 पर .NET फ्रेमवर्क 4.5 स्थापित कर सकता हूं। मेरा सवाल यह है कि, मैं यह सुनिश्चित करने के लिए कि कैसे .NET 4.5.2 स्थापित है, PowerShell DSC का उपयोग कैसे करूं?


क्या आपने इसके लिए DSC का उपयोग किया, या कुछ और?
स्टीवन लेकेन्स

Chocolatey में 4.5.2 के लिए एक इंस्टॉलर है, जो कि PowerShell आधारित है। क्या आपने चॉकलेट के साथ डीएससी का उपयोग करके जांच की है? chocolatey.org/packages/DotNet4.5.2
स्टीवन Liekens

जवाबों:


12

यकीन नहीं होता कि यह अभी भी ओपी द्वारा आवश्यक है, लेकिन मेरे पास हाल ही में एक ही चुनौती थी और 2012 के सर्वर पर सिर्फ पैकेज संसाधन का उपयोग करने की कोशिश करते समय इंस्टॉलर के साथ कई समस्याएं मिलीं। एंड-अप एक स्क्रिप्ट संसाधन लिखने और वेब इंस्टॉलर का उपयोग करने के लिए पूर्ण पैकेज के रूप में एक बहुत ही सामान्य त्रुटि के साथ विघटित होने में विफल रहता है।

वैसे भी, यहां एक काम करने वाला स्क्रिप्ट संसाधन है, जिसके साथ मैं समाप्त हुआ:

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 इंटीग्रेशन (चॉकलेट, cDotNetInstaller, आदि ...) की कोशिश की और वे 4.6.1 इंस्टॉलर के साथ विफल रहे। यह पहला काम है। कुडोस।
स्वेनी

माना; अच्छा उत्तर। मैं यह उल्लेख करना चाहता हूं कि यह बावर्ची और dsc_scriptसंसाधन के माध्यम से भी काम करता है ।
जेसन कैप्रियोटी

मैं भी NetBuildVersion = 461,310 और हथियाने के साथ .net 4.7 के साथ इस काम करता है की पुष्टि की, download.microsoft.com/download/A/E/A/...
JohnnyFun

2

इस Microsoft टेक्नेट के लेख के अनुसार , इंस्टॉल करने की सुविधा का नाम Get-WindowsFeature कमांड के परिणाम से एक होना चाहिए । इस प्रकार, यदि .NET 4.5.2 सूची में प्रकट नहीं होता है, तो आप यह सुनिश्चित नहीं कर सकते कि यह DSC के माध्यम से स्थापित है।

नाम उस भूमिका या विशेषता का नाम बताता है जिसे आप सुनिश्चित करना चाहते हैं कि जोड़ा या हटाया गया है। यह Get-WindowsFeature cmdlet से नाम गुण के समान है, न कि भूमिका या सुविधा का प्रदर्शन नाम।

इसलिए मुझे लगता है कि आपको डीसीएस (4.5) के माध्यम से प्रमुख संस्करण स्थापित करना होगा, और फिर इसे 4.5.2 पर अपडेट करने के लिए सबसे अच्छा समाधान निकालना होगा।


एक काफी प्रमुख निरीक्षण की तरह लगता है। नई पॉवरशेल DSC ढाई साल पुराने नए सॉफ्टवेयर स्थापित कर सकती है!
मार्क

1
यह एक निरीक्षण नहीं है। .NET 4.5.2 रनटाइम एक विंडोज फ़ीचर नहीं है, इसलिए इसे WindowsFeature संसाधन का उपयोग करके इंस्टॉल नहीं किया जा सकता है। यह या तो विंडोज अपडेट के माध्यम से या एक अलग डाउनलोड के रूप में उपलब्ध है। स्क्रिप्ट को उपयुक्त इंस्टॉलर को डाउनलोड और निष्पादित करना होगा।
पणगीतिस कानावोस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.