Для начала вам необходимо скачать последнюю ссылку (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
Второй комплект и сгенерируйте имя из оригинальной опоры.
$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.
от MSI будет расположен по адресу:
$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
, который представляет собой путь к msi, который можно использовать для построения y наш пакет SCCM.
Вы можете задать вопрос, потому что вы спрашиваете о создании пакета установки программного обеспечения. Хотя это возможно ... если вы хотите помочь с этим, я предлагаю вам показать нам какой-то код, который вы попробовали, а затем сообщество поможет вам. – Matt
Пакет установки программного обеспечения не является темой вопроса. Написание сценария для загрузки Java, как указано выше, мы не нашли способа загрузить последнюю версию Java, поэтому у нас нет кода для показа. Благодарю за ваш ответ. – korymiller
В вашем вопросе указывается автоматическая загрузка и установка последней версии Java, поэтому я ответил так, как я сделал FYI – Matt