我們有一個依賴Java的應用程序,我們正在使用SCCM安裝程序推送給客戶端。將Java更新到最新版本的Powershell腳本
由於Java的被幾乎每月更新(和舊的更新之後到期30天),我們正在尋找一種方式,有SCCM安裝程序保持最新的Java版本更新。我們有能力從我們的SCCM安裝程序運行Powershell腳本,但我們還沒有找到一種方法來編寫腳本,該腳本將自動下載並安裝最新的Java版本。
有誰知道這是可能的,我們怎麼能去嗎?
在此先感謝!
我們有一個依賴Java的應用程序,我們正在使用SCCM安裝程序推送給客戶端。將Java更新到最新版本的Powershell腳本
由於Java的被幾乎每月更新(和舊的更新之後到期30天),我們正在尋找一種方式,有SCCM安裝程序保持最新的Java版本更新。我們有能力從我們的SCCM安裝程序運行Powershell腳本,但我們還沒有找到一種方法來編寫腳本,該腳本將自動下載並安裝最新的Java版本。
有誰知道這是可能的,我們怎麼能去嗎?
在此先感謝!
你或許可以使用現有的鏈接此頁面上的下載:http://java.com/en/download/manual.jsp
或者,你可以做下載一次,並把它放在一個文件共享,所以你可以用簡單的方法來從一個複製文件UNC路徑像
\\fileserver\folder\installerpackage.exe
只是爲頭痛準備。在處理了幾十臺機器上的Java自身的移除和升級問題之後,我可以告訴你它並不總是一個乾淨的卸載/重新安裝。除非他們改進了卸載程序,否則很有可能最終會遇到Java安裝程序認爲已安裝的情況,但事實並非如此。我也看到了相反的地方,它認爲它沒有安裝,但它是。
我認爲這些鏈接可能是我們需要的。非常感謝! – korymiller 2014-10-29 19:30:59
請看看this下載使用PowerShell安裝Java沉默了文件和this。 例如:
Invoke-WebRequest $address -OutFile $destination
# $addressis the http-address of the installer
# $destination is a Path where the the downloadoutput should saved to
$destination /s
# with the '/s' Parameter you are starting the installer silent
如果你能得到的下載鏈接,你應該能夠下載並安裝Java。但atm我不知道如何獲得鏈接。 我希望這會有所幫助。
謝謝你的迴應! – korymiller 2014-10-28 17:58:13
您需要包含這些鏈接的有用部分。如果他們以後死了,你的答案對任何人都是沒有用的。 – Matt 2014-10-28 18:14:38
我希望我的編輯能夠實現你的願望。 – 2014-10-29 08:09:20
首先,你需要獲得最新的下載鏈接(32位)。
$JavaFile = [pscustomobject]@{
JavaVersion = ''
FileName = ''
DownloadURL = $((Invoke-WebRequest 'http://www.java.com/en/download/manual.jsp').links | where innerHTML -like "Windows Offline" | select href).href
}
對於64位URL使用:
$JavaFile = [pscustomobject]@{
JavaVersion = ''
FileName = ''
DownloadURL = $((Invoke-WebRequest 'http://www.java.com/en/download/manual.jsp').links | where innerHTML -like "Windows Offline (64-bit)" | select href).href
}
所以現在我們要檢查,如果我們已經下載的文件。 我們可以通過檢查日誌文件來做到這一點。所以首先創建一個javahistorylog.log來存儲用過的鏈接。 使用以下函數,我們可以檢查鏈接的日誌。
function CheckHistory ($fileurl,$path){
$history=Get-Content "$path"
$r = $false
Foreach ($historicurl in $history){
if ($historicurl -eq $fileurl){
$r = $true
}
}
return $r
}
如果沒有找到,我們可以繼續下載文件。
$JavaFile.FileName = "tempinstaller$(get-date -Format yyMMddmm).exe"
Invoke-WebRequest $JavaFile.DownloadURL -OutFile ("$TempDownloadLocation\"+ $JavaFile.FileName) -ev $DLErr
if($DLErr){Exit}
下載後,我們可以做一些編輯的setup.exe 首先得到該版本和安全名稱。
$TempFileName = $JavaFile.FileName
$JavaFile.JavaVersion = get-item ("$TempDownloadLocation\"+ $JavaFile.FileName) | select -ExpandProperty versioninfo | select -ExpandProperty productversion
第二組,並從originalfilename prop生成名稱。
$JavaFile.FileName = "jre1."+(((Select-String -Pattern '[0-9]u[0-9]+' -InputObject (get-item ("$TempDownloadLocation\$TempFileName") | select -ExpandProperty versioninfo | select -ExpandProperty originalfilename)) |
ForEach-Object -Process {
$_.Matches
} |
ForEach-Object -Process {
$_.Value
}) -replace 'u', '.0_')
現在重命名文件。
Rename-Item -Path "$TempDownloadLocation\$TempFileName" -NewName ($JavaFile.FileName+".exe")
更新historylog
if(Test-Path -path ("$TempDownloadLocation\"+$JavaFile.FileName+".exe")){
add-content "$TempDownloadLocation\javahistorylog.log" $JavaFile.DownloadURL
}
現在我們可以考慮讓MSI文件爲構建SW包。
微星將位於:
$MsiFilePathTemp = "$env:LOCALAPPDATA\Oracle\Java\" -replace 'Local', 'LocalLow'
我們可以通過執行設置和應對微星得到MSI:
Start-Process -FilePath ("$TempDownloadLocation\"+$JavaFile.FileName+".exe") -ArgumentList '/s'
while(!(Test-Path ("$MsiFilePathTemp\"+$JavaFile.FileName+"\"+$JavaFile.FileName+".msi")))
{
Start-Sleep -Seconds 1.5
}
Copy-Item -Path ("$MsiFilePathTemp\"+$JavaFile.FileName+"\"+$JavaFile.FileName+".msi") -Destination $MsiFilePathOut -Force -ErrorVariable $CDR
if($CDR){
exit
}
現在停止該進程並刪除該.exe文件
Get-Process -Name $JavaFile.FileName | Stop-Process
While (Get-Process -Name $JavaFile.FileName -ErrorAction SilentlyContinue)
{
Start-Sleep -Seconds 2
}
Remove-Item -Path ("$TempDownloadLocation\"+$JavaFile.FileName+".exe") -Force
$MSIFile = ("$MsiFilePathOut\"+$JavaFile.FileName+".msi")
現在你有$MSIFile
這是你可以用來建立y的msi路徑我們的SCCM包裝。
由於您在詢問有關創建軟件安裝軟件包的問題,因此您可能會考慮您的問題。雖然這是可能的...如果你想得到這個幫助,我建議你向我們展示你已經嘗試過的一些代碼,然後社區會幫助你。 – Matt 2014-10-28 15:15:39
軟件安裝包不是問題的主題。編寫腳本來下載Java,如上所述,我們還沒有找到任何方式來下載最新版本的Java,所以我們沒有任何代碼可以顯示。感謝您的答覆。 – korymiller 2014-10-28 17:57:34
您的問題確實_automatically下載並安裝最新的Java版本_這就是爲什麼我回應我的方式我FYI – Matt 2014-10-28 18:13:47