[英]PowerShell script - Extract, Copy and delete zip file not working
我已经构建了一个 Power Shell 脚本,它应该执行以下操作
下面是我的 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
我的问题是:
目的是检查版本是否相同,如果不是,则显示“相同版本”,下载 zip 文件
我完全不知道如何解决上述问题。
如果它正在下载,则验证未按预期运行。
如您所见,我做了一些更改,一些语法修正等。
然而,当然,我无法对此进行测试,因为我不知道您的 $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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.