adminst
Goto Top

Powershell Silent Update Java

Hallo zusammen
Ich möchte die Installation von Java Updates auf meinen paar Client automatisieren. Auf meiner Suche habe ich einen Ansatz gefunden:
http://superuser.com/questions/443686/silent-java-update-check

Das Problem ist, dass es das gefunde Update nicht automatisch installiert. Weiss jemand was ich noch hinzufügen müsste oder hat
jemand einen anderen Ansatz?

Ich habe leider keine Möglichkeit WSUS einzusetzen.

Danke für eure Hilfe
adminst

Content-Key: 232757

Url: https://administrator.de/contentid/232757

Printed on: April 26, 2024 at 07:04 o'clock

Member: colinardo
colinardo Mar 16, 2014, updated at Mar 17, 2014 at 08:27:12 (UTC)
Goto Top
Hallo adminst,
das Script könntest du hiermit kombinieren, welches die aktuelle Java-Version herunterlädt.
Silent installieren kannst du dann mit :
java.exe /s REBOOT=Suppress
Grüße Uwe

-edit- als Powershell-Script könnte das dann so aussehen (für eine 32Bit Java Runtime):
# check ob 32Bit oder 64Bit
$osVersion = (gwmi Win32_OperatingSystem).OSArchitecture
if ($osVersion -like "64-Bit"){  
    $regKey = "HKLM:\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment"  
}else{
    $regKey = "HKLM:\SOFTWARE\JavaSoft\Java Runtime Environment"  
}

$strVersion = (Get-ItemProperty $regKey -name "CurrentVersion" -ErrorAction SilentlyContinue).CurrentVersion  
if (!$strVersion){
    write-host "Auf dem System ist kein Java installiert. Script beendet" -Foregroundcolor Red  
    exit
}else{
    $strMinorVersion = [int]$strVersion.Split(".")[1]  
	$strFamily = (Get-ItemProperty $regKey -name "Java$($strMinorVersion)FamilyVersion" -ErrorAction SilentlyContinue)."Java$($strMinorVersion)FamilyVersion"  
	$strBuildVersion = [int]$strFamily.Split("_")[1]  
}
#Download-Pfad für die Dateien
$targetPathJava32 = $env:TEMP + "\java32bit.exe"  

#Webseite mit WebClient passendem Encoding und 64-Bit User-Agent herunterladen
$net = New-Object System.Net.WebClient
$net.Encoding = [System.Text.Encoding]::UTF8
$net.Headers.Add("User-Agent","WOW64")  
$net.Headers.Add("Accept-Language","de-de")  
$content = $net.DownloadString("http://www.java.com/de/download/manual.jsp")  

# Webversion extrahieren
$webversion = ([regex]'Empfohlen Version (\d+) Update (\d+)').Match($content)  
$strWebMinor = [int]$webversion.Groups[1].Value
$strWebBuild = [int]$webversion.Groups[2].Value

if ($strMinorVersion -lt $strWebMinor -or $strBuildVersion -lt $strWebBuild){
    write-host "Es ist ein Java-Update verfügbar" -ForegroundColor Yellow  
    # Downloadlinks aus dem Quelltext extrahieren
    $link32bit = ([regex]'<a title="Download der Java-Software für Windows Offline" href="([^>\"]+)">').Match($content).Groups[1].Value  
    if ($link32bit -ne ""){  
	    write-host "Beginne Download des Updates. Bitte warten ... " -ForegroundColor Green -NoNewline  
        # Download Update
        $net.DownloadFile($link32bit,$targetPathJava32)
	    write-host "Download abgeschlossen" -ForegroundColor Green  
        write-host "Installiere Update ..." -ForeGroundColor Yellow  
        # Installiere Update silent
        Start-Process -FilePath $targetPathJava32 -ArgumentList "/s REBOOT=Suppress" -wait  
        if ($LASTEXITCODE -eq 0){
	        write-host "Java $strWebMinor Update $strWebBuild wurde erfolgreich installiert"  
        }else{
	        write-host "Bei der Installation ist ein Fehler aufgetreten. Fehlercode: $LASTEXITCODE"  
        }
    }else{
        write-host "Download-Link konnte nicht extrahiert werden!" -ForegroundColor Red  
    }
}else{
    write-host "Kein Update verfügbar. Script beendet." -ForegroundColor DarkGray  
}
Member: adminst
adminst Mar 17, 2014 at 15:30:11 (UTC)
Goto Top
Hallo Colinardo
Vielen Dank. Funktioniert perfekt.
adminst