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を使用することになりましたか、それとも何か他のものですか?
スティーブンリーケンズ

Chocolateyには、PowerShellベースの4.5.2のインストーラーがあります。ChocolateyでDSCを使用して調査しましたか?chocolatey.org/packages/DotNet4.5.2
スティーブンリーケンス

回答:


12

OPでこれがまだ必要かどうかはわかりませんが、最近、まったく同じ課題に直面し、2012 R2サーバーでパッケージリソースのみを使用しようとしたときに、インストーラー自体に多くの問題が見つかりました。完全なパッケージが非常に一般的なエラーで解凍に失敗し続けるため、スクリプトリソースを記述してWebインストーラーを使用する必要が生じました。

とにかく、ここに私が終わった作業スクリプトリソースがあります。

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インストーラーで失敗しました。これが最初に機能したものです。称賛。
スワニー

同意した; いい答え。これはChefとdsc_scriptリソースでも機能することを述べたいと思います。
ジェイソンカプリオッティ

私はまた、NetBuildVersion = 461310とつかんで、.NET 4.7で、この作品を確認しdownload.microsoft.com/download/A/E/A/...
JohnnyFun

2

このMicrosoft Technetの記事によるとインストールする機能の名前は、Get-WindowsFeatureコマンドの結果からの名前でなければなりません。したがって、.NET 4.5.2がリストに表示されない場合、DSCを介してインストールされていることを確認できません。

名前確実に追加または削除する役割または機能の名前を示します。これはGet-WindowsFeatureコマンドレットのNameプロパティと同じであり、役割または機能の表示名ではありません。

したがって、DCS(4.5)を介してメジャーバージョンをインストールし、4.5.2に更新するための最適なソリューションを見つけ出す必要があると思います。


かなり大きな見落としのようです。新しいPowerShell DSCは、2年半前の新しいソフトウェアをインストールできます。
マーク

1
それは見落としではありません。.NET 4.5.2ランタイムはWindows機能ではないため、WindowsFeatureリソースを使用してインストールすることはできません。Windows Updateから、または個別のダウンロードとして入手できます。スクリプトは、適切なインストーラーをダウンロードして実行する必要があります。
パナギオティスカナヴォス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.