আমি কীভাবে পাওয়ারশেল ডিএসসির মাধ্যমে .NET 4.5.2 ইনস্টল করতে পারি?


15

উইন্ডোজ ফিচার রিসোর্স এবং নেট-ফ্রেমওয়ার্ক -45-কোর বৈশিষ্ট্যের মাধ্যমে উইন্ডোজ সার্ভার 2012 আর 2 তে নেট নেট ফ্রেমওয়ার্ক 4.5 ইনস্টল করতে পারি। আমার প্রশ্ন, .NET 4.5.2 ইনস্টল করা আছে তা নিশ্চিত করতে আমি কীভাবে পাওয়ারশেল ডিএসসি ব্যবহার করব?


আপনি কি এর জন্য ডিএসসি বা অন্য কিছু ব্যবহার করে শেষ করেছেন?
স্টিভেন লাইকেন্স

চকোলেটির 4.5.5 এর জন্য একটি ইনস্টলার রয়েছে যা পাওয়ারশেল ভিত্তিক। আপনি কি চকোলেটির সাথে ডিএসসি ব্যবহার করে তদন্ত করেছেন? chocolatey.org/packages/DotNet4.5.2.2
স্টিভেন লিকেন্স

উত্তর:


12

এটি এখনও ওপি দ্বারা প্রয়োজনীয় কিনা তা নিশ্চিত নয়, তবে সম্প্রতি আমি ঠিক একই চ্যালেঞ্জটি পেয়েছি এবং ইনস্টলার নিজেই অনেক সমস্যা পেয়েছি, যখন কেবলমাত্র 2012 আর 2 সার্ভারে প্যাকেজ সংস্থান ব্যবহার করার চেষ্টা করার সময়। একটি স্ক্রিপ্ট রিসোর্স লিখতে হবে এবং ওয়েব ইনস্টলারটি পুরো প্যাকেজটি খুব সাধারণ ত্রুটির সাথে সঙ্কুচিত করতে ব্যর্থ হওয়ায় ওয়েব ইনস্টলারটি ব্যবহার করতে হবে।

যাইহোক, এখানে একটি কার্যকারী স্ক্রিপ্ট সংস্থান যা আমি শেষ করেছি:

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

দুর্দান্ত উত্তর, এই পদ্ধতিটি। নেট 4.6.1 এর জন্যও কাজ করে। আমি বিদ্যমান ডিএসসি একীকরণের বিভিন্ন ধরণের চেষ্টা করেছি (চকোলেটি, সিডটনেট ইনস্টলার, ইত্যাদি ...) এবং সেগুলি 4.6.1 ইনস্টলার দিয়ে ব্যর্থ হয়েছে। এটিই প্রথম কাজ করেছে। যশ।
সোয়াননি

একমত; চমৎকার উত্তর. আমি এটি উল্লেখ করতে চাই শেফ এবং dsc_scriptসংস্থানগুলির মাধ্যমেও কাজ করে।
জেসন ক্যাপ্রিওটি

আমিও NetBuildVersion = 461310 এবং দখল সঙ্গে .net 4.7 সঙ্গে এই কাজ নিশ্চিত, download.microsoft.com/download/A/E/A/...
JohnnyFun

2

এই মাইক্রোসফ্ট টেকনেট আর্টিকেল অনুসারে , ইনস্টল করার জন্য বৈশিষ্ট্যটির নাম গেট-উইন্ডোজ ফিচার কমান্ডের ফলাফল থেকে একটি হওয়া উচিত । সুতরাং, .NET 4.5.2 তালিকায় উপস্থিত না হলে আপনি ডিএসসির মাধ্যমে এটি ইনস্টল করা নিশ্চিত করতে পারবেন না।

নাম আপনি যে ভূমিকা বা বৈশিষ্ট্যটি নিশ্চিত করতে চান তা যুক্ত করা বা অপসারণের নাম নির্দেশ করে ic এটি গেট-উইন্ডোজ ফিচার সেমিডিলেট থেকে নাম বৈশিষ্ট্যের সমান এবং ভূমিকা বা বৈশিষ্ট্যের প্রদর্শন নাম নয়।

সুতরাং আমি অনুমান করি যে আপনাকে ডিসিএস (4.5) এর মাধ্যমে মুখ্য সংস্করণটি ইনস্টল করতে হবে এবং তারপরে 4.5.4 এ আপডেট করার সেরা সমাধানটি বের করতে হবে।


মোটামুটি বড় পর্যবেক্ষণের মতো বলে মনে হচ্ছে। নতুন পাওয়ারশেল ডিএসসি আড়াই বছর বয়সী হিসাবে নতুন হিসাবে সফ্টওয়্যার ইনস্টল করতে পারে!
চিহ্নিত করুন

1
এটি কোনও তদারকি নয়। .NET 4.5.2 রানটাইম হয় না উইন্ডোজ বৈশিষ্ট্য, তাই এটি WindowsFeature রিসোর্স ব্যবহার করে ইনস্টল করা যাবে না। এটি উইন্ডোজ আপডেটের মাধ্যমে বা পৃথক ডাউনলোড হিসাবে পাওয়া যায়। স্ক্রিপ্টটি উপযুক্ত ইনস্টলারটি ডাউনলোড করে চালিত করতে হবে।
পানাগিওটিস কানভোজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.