Jak mogę zainstalować .NET 4.5.2 poprzez PowerShell DSC?
15
Mogę zainstalować .NET Framework 4.5 na Windows Server 2012 R2 za pomocą PowerShell DSC poprzez zasób WindowsFeature i funkcję NET-Framework-45-Core. Moje pytanie brzmi: jak używać programu PowerShell DSC, aby upewnić się, że .NET 4.5.2 jest zainstalowany?
Chocolatey ma instalator dla wersji 4.5.2, która jest również oparta na PowerShell. Czy korzystałeś z DSC z Chocolatey? chocolatey.org/packages/DotNet4.5.2
Nie jestem pewien, czy jest to nadal wymagane przez OP, ale ostatnio miałem dokładnie to samo wyzwanie i znalazłem wiele problemów z samym instalatorem, gdy próbowałem użyć tylko zasobu pakietu na serwerze R2 z 2012 roku. Skończyło się na tym, że musiałem napisać zasób skryptu i skorzystać z instalatora internetowego, ponieważ pełny pakiet nadal nie dekompresował się z bardzo ogólnym błędem.
W każdym razie oto działający zasób skryptu, z którym skończyłem:
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
Świetna odpowiedź, to podejście działa również dla .net 4.6.1. Próbowałem różnych istniejących integracji DSC (chocolatey, cDotNetInstaller itp.) I wszystkie zakończyły się niepowodzeniem z instalatorem 4.6.1. To pierwszy, który zadziałał. Sława.
Zgodnie z tym artykułem Microsoft Technet nazwa instalowanej funkcji powinna być taka sama jak wynik polecenia Get-WindowsFeature . Dlatego jeśli .NET 4.5.2 nie pojawia się na liście, nie możesz upewnić się, że jest zainstalowany przez DSC.
Nazwa Wskazuje nazwę roli lub funkcji, które mają zostać dodane lub usunięte. Jest to to samo, co właściwość Name z polecenia cmdlet Get-WindowsFeature, a nie nazwa wyświetlana roli lub funkcji.
Myślę, że będziesz musiał zainstalować główną wersję za pomocą DCS (4.5), a następnie wymyślić najlepsze rozwiązanie, aby zaktualizować ją do wersji 4.5.2.
To nie jest niedopatrzenie. Środowisko wykonawcze .NET 4.5.2 nie jest funkcją systemu Windows, więc nie można go zainstalować przy użyciu zasobu WindowsFeature. Jest dostępny za pośrednictwem Windows Update lub jako osobny plik do pobrania. Skrypt będzie musiał pobrać i uruchomić odpowiedni instalator.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.