Войти

Показать полную графическую версию : [решено] Проверка версии .net и установка нужной


Elven
21-03-2017, 11:20
Интрига, как обычно, раскрыта в названии темы. Нужно проверить версию .net framework и если она ниже 4.5.2 скачать и установить его же.
И еще один подпункт: это часть скрипта, посему хотелось бы чтобы скрипт дожидался окончания установки .net'a и записывал в лог если установка не удалась.

Kazun
21-03-2017, 12:04
http://stackoverflow.com/questions/3487265/powershell-script-to-return-versions-of-net-framework-on-a-machine

if (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' | %{$_ -match 'Release'})
{
$NetBuildVersion = 379893
$CurrentRelease = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full').Release
if ($CurrentRelease -lt $NetBuildVersion)
{
$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:TEMP -ChildPath $FileName

if (!(Test-Path $BinPath))
{
(New-Object Net.WebClient).DownloadFile($SourceURI,$BinPath)
}

$process = Start-Process -FilePath $BinPath -ArgumentList "/q /norestart" -Wait -PassThru
if ($process.ExitCode -eq 0){
"$FileName has been successfully installed"
}
else {
throw "Error exit code: $($process.ExitCode) file $FileName"
}
}
}

Elven
21-03-2017, 14:32
Скачивать не захотел почему-то, немного поменял - заработало.
if (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' | %{$_ -match 'Release'})
{
$NetBuildVersion = 379893
$CurrentRelease = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full').Release
if ($CurrentRelease -lt $NetBuildVersion)
{
$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:TEMP -ChildPath $FileName

if (!(Test-Path $BinPath))
{
Invoke-WebRequest $SourceURI -outfile $BinPath
}

$process = Start-Process -FilePath $BinPath -ArgumentList "/q /norestart" -Wait -PassThru
if ($process.ExitCode -eq 0){
"$FileName has been successfully installed"
}
else {
throw "Error exit code: $($process.ExitCode) file $FileName"
}
}
}




© OSzone.net 2001-2012