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

Ausgedruckt am: 29.03.2024 um 04:03 Uhr

Mitglied: colinardo
colinardo 16.03.2014, aktualisiert am 17.03.2014 um 09:27:12 Uhr
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  
}
Mitglied: adminst
adminst 17.03.2014 um 16:30:11 Uhr
Goto Top
Hallo Colinardo
Vielen Dank. Funktioniert perfekt.
adminst