Puedo instalar .NET Framework 4.5 en Windows Server 2012 R2 usando PowerShell DSC a través del recurso WindowsFeature y la función NET-Framework-45-Core. Mi pregunta es, ¿cómo uso PowerShell DSC para garantizar que .NET 4.5.2 esté instalado?
Puedo instalar .NET Framework 4.5 en Windows Server 2012 R2 usando PowerShell DSC a través del recurso WindowsFeature y la función NET-Framework-45-Core. Mi pregunta es, ¿cómo uso PowerShell DSC para garantizar que .NET 4.5.2 esté instalado?
Respuestas:
No estoy seguro si el OP todavía lo requiere, pero recientemente tuve exactamente el mismo desafío y encontré muchos problemas con el instalador en sí mismo, al intentar usar solo el recurso del paquete en un servidor R2 2012. Terminé teniendo que escribir un recurso de script y usar el instalador web ya que el paquete completo no se descomprimía con un error muy genérico.
De todos modos, aquí hay un recurso de script de trabajo con el que terminé:
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
dsc_script
recurso.
Según este artículo de Microsoft Technet , el nombre de la característica a instalar debe ser uno del resultado del comando Get-WindowsFeature . Por lo tanto, si .NET 4.5.2 no aparece en la lista, no puede asegurarse de que esté instalado a través de DSC.
Nombre Indica el nombre de la función o función que desea garantizar que se agregue o elimine. Esto es lo mismo que la propiedad Name del cmdlet Get-WindowsFeature, y no el nombre para mostrar de la función o característica.
Así que supongo que tendrá que instalar la versión principal a través de DCS (4.5), y luego encontrar la mejor solución para actualizarla a 4.5.2.