Сценарий PowerShell - извлечение, копирование и удаление ZIP-файла не работает - PullRequest
0 голосов
/ 15 марта 2020

У меня есть сценарий Power Shell, который должен выполнить следующую

  1. создать java версию каталога, если не существует
  2. Скачать текстовый файл из intr anet
  3. Проверьте java версию из загруженного текстового файла
  4. Если версия не совпадает, загрузите java zip-файл онлайн
  5. Извлеките java zip-файл
  6. Скопируйте zip-файл JDK в C: \ Program Files \ Java
  7. Удалите zip-файл после извлечения

Ниже моя Power Shell скрипт

$JavaVersion = "java.version=11.0.6"
$Folder = "C:\Users\$env:UserName\test\java"
$IntranetUrl = http://10.1.48.25/test/version.txt
$IntranetTextFile = "C:\Users\$env:UserName\test\java\version.txt"
$JavaDownloadPath = http://10.1.48.25/test/install/Inst_20.05.00.01/testDesktop/OpenJDK11U- 
jdk_x64_windows_hotspot_11.0.6_10.zip
$JavaZipFilePath = C:\Users\$env:UserName\test\java\openjdk-11+28_windows-x64_bin.zip
$ExpandArchivePath = "C:\Users\$env:UserName\test\java\*.zip"
$ExpandArchiveDestinationPath = "C:\Users\$env:UserName\test\java"

# create java version directory in C:\Users\$env:UserName\test\java if it does not exist

if (-not (Test-Path $Folder)) {

try {
    New-Item -Path $Folder -ItemType Directory -ErrorAction Stop | Out-Null #-Force
 }
catch {
    Write-Error -Message "Unable to create directory "C:\Program Files\test". Error was: $_" - 
ErrorAction Stop
}
} 

# Download text file from intranet 
Invoke-WebRequest http://10.1.48.25/test/version.txt -OutFile 
"C:\Users\$env:UserName\test\java\version.txt"

# Check java version from version.txt
If (Get-Content $IntranetTextFile  | %{$_ -match $JavaVersion}) 
{
echo Version Same
}
else
{
# Download Java file 
Invoke-WebRequest $JavaDownloadPath -OutFile $JavaZipFilePath
}

#Extract the zip file in C:\Users\$env:UserName\test\java\jdk-11.0.6

if (-not (Test-Path "C:\Users\$env:UserName\test\java\jdk-11")) {
Expand-Archive "C:\Users\$env:UserName\test\java\openjdk-11+28_windows-x64_bin.zip" -DestinationPath 
"C:\Users\$env:UserName\test\java"
}

# Copy the JDK zip file to C:\Program Files\Java
Copy-Item -Path .\*.zip -Destination $ExpandArchiveDestinationPath -force

#Delete the zip file after extraction
Remove-Item $JavaZipFilePath -Force

Моя проблема:

  1. , когда java версия та же, что и выше, скрипт загружает java zip-файл, который я не хотел!

Цель состояла в том, чтобы проверить, совпадает ли версия, а затем показать «Та же версия», если нет, скачать zip-файл

Когда версия не совпадает, она не извлекает zip-файл, не копирует файл и не удаляет его.

Я совершенно новичок в Power Shell, есть идеи о том, как я могу решены вышеуказанные вопросы.

1 Ответ

0 голосов
/ 15 марта 2020

Если загрузка все равно происходит, значит, проверка не работает должным образом.

Я внес несколько изменений, как вы можете видеть, некоторые исправления синтаксиса и т. Д. c.

Тем не менее, конечно, я не могу проверить это, поскольку я не знаю, что находится в вашем $ IntranetTextFile, и при этом у меня нет аналогичной среды для проверки.

$JavaVersion                  = 'java.version=11.0.6'
$Folder                       = "C:\Users\$env:UserName\test\java"
$IntranetUrl                  = 'http://10.1.48.25/test/version.txt'
$IntranetTextFile             = "C:\Users\$env:UserName\test\java\version.txt"
$JavaDownloadPath             = 'http://10.1.48.25/test/install/Inst_20.05.00.01/testDesktop/OpenJDK11U-jdk_x64_windows_hotspot_11.0.6_10.zip'
$JavaZipFilePath              = "C:\Users\$env:UserName\test\java\openjdk-11+28_windows-x64_bin.zip"
$ExpandArchivePath            = "C:\Users\$env:UserName\test\java\*.zip"
$ExpandArchiveDestinationPath = "C:\Users\$env:UserName\test\java"

# create java version directory in C:\Users\$env:UserName\test\java if it does not exist

if (-not (Test-Path $Folder)) 
{
    try 
    {
        New-Item -Path $Folder -ItemType Directory -ErrorAction Stop | 
        Out-Null #-Force
    }
    catch 
    {
        $WriteErrorSplat = @{
            Message     = "Unable to create directory C:\Program Files\$Folder. Error was: $_"
            ErrorAction = 'Stop'
        }
        Write-Error @WriteErrorSplat
    }
} 

# Download text file from intranet 
$InvokeWebRequestSplat = @{
    Uri     = 'http://10.1.48.25/test/version.txt'
    OutFile = "C:\Users\$env:UserName\test\java\version.txt"
}
Invoke-WebRequest @InvokeWebRequestSplat

# Check java version from version.txt
If ((Get-Content $IntranetTextFile) -match $JavaVersion) 
{Write-Warning -Message 'Java Version already exits. Download not needed.'}
else {Invoke-WebRequest $JavaDownloadPath -OutFile $JavaZipFilePath}

#Extract the zip file in C:\Users\$env:UserName\test\java\jdk-11.0.6

if (-not (Test-Path "C:\Users\$env:UserName\test\java\jdk-11")) 
{
    $ExpandArchiveSplat = @{
        Path            = "C:\Users\$env:UserName\test\java\openjdk-11+28_windows-x64_bin.zip" 
        DestinationPath = "C:\Users\$env:UserName\test\java"
    }
}
Expand-Archive @ExpandArchiveSplat

# Copy the JDK zip file to C:\Program Files\Java
Copy-Item -Path '.\*.zip' -Destination $ExpandArchiveDestinationPath -force

#Delete the zip file after extraction
Remove-Item $JavaZipFilePath -Force
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...