ฉันสามารถติดตั้ง. NET Framework 4.5 บน Windows Server 2012 R2 โดยใช้ PowerShell DSC ผ่านทางคุณสมบัติ WindowsFeature และคุณสมบัติ NET-Framework-45-Core คำถามของฉันคือฉันจะใช้ PowerShell DSC เพื่อให้แน่ใจว่าติดตั้ง. NET 4.5.2 ได้อย่างไร
ฉันสามารถติดตั้ง. NET Framework 4.5 บน Windows Server 2012 R2 โดยใช้ PowerShell DSC ผ่านทางคุณสมบัติ WindowsFeature และคุณสมบัติ NET-Framework-45-Core คำถามของฉันคือฉันจะใช้ PowerShell DSC เพื่อให้แน่ใจว่าติดตั้ง. NET 4.5.2 ได้อย่างไร
คำตอบ:
ไม่แน่ใจว่า OP นี้ยังต้องการอยู่หรือไม่ แต่ฉันมีความท้าทายที่เหมือนกันเมื่อไม่นานมานี้และพบปัญหามากมายกับตัวติดตั้งเมื่อพยายามใช้เพียงทรัพยากรแพ็คเกจบนเซิร์ฟเวอร์ 2012 R2 จบลงต้องเขียนทรัพยากรสคริปต์และใช้เว็บติดตั้งเป็นแพคเกจเต็มเก็บล้มเหลวในการคลายกับข้อผิดพลาดทั่วไปมาก
อย่างไรก็ตามนี่คือทรัพยากรสคริปต์การทำงานที่ฉันได้รับ:
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
ทรัพยากร
ตามบทความ Microsoft Technet นี้ชื่อของคุณสมบัติที่จะติดตั้งควรเป็นหนึ่งในผลลัพธ์ของคำสั่งGet-WindowsFeature ดังนั้นหาก. NET 4.5.2 ไม่ปรากฏในรายการคุณไม่สามารถมั่นใจได้ว่าติดตั้งผ่านทาง DSC
ชื่อระบุชื่อของบทบาทหรือคุณสมบัติที่คุณต้องการให้แน่ใจว่ามีการเพิ่มหรือลบ นี่เหมือนกับชื่อคุณสมบัติจาก Get-WindowsFeature cmdlet และไม่ใช่ชื่อที่แสดงของบทบาทหรือคุณสมบัติ
ดังนั้นฉันคิดว่าคุณจะต้องติดตั้งเวอร์ชันหลักผ่านทาง DCS (4.5) แล้วหาทางออกที่ดีที่สุดในการอัปเดตเป็น 4.5.2