我想製作一個PowerShell腳本,我可以使用RMM工具。所以,基本上這個powershell腳本將在本地機器上執行。它需要檢查應用程序的版本是否已安裝,並且至少需要版本號xx。如果未安裝,或版本較少,則會下載可執行文件並以靜默方式安裝它。PowerShell腳本來安裝軟件
我在網上找到了一個可以正常工作的Adobe Reader例子,但它並沒有在手邊做檢查。所以,這個腳本每次運行時都會安裝Adobe Reader。
$tempFolder=$Env:TEMP
function runProcess ($cmd, $params) {
$p = new-object System.Diagnostics.Process
$p.StartInfo = new-object System.Diagnostics.ProcessStartInfo
$exitcode = $false
$p.StartInfo.FileName = $cmd
$p.StartInfo.Arguments = $params
$p.StartInfo.UseShellExecute = $False
$p.StartInfo.RedirectStandardError = $True
$p.StartInfo.RedirectStandardOutput = $True
$p.StartInfo.WindowStyle = 1;
$null = $p.Start()
$p.WaitForExit()
$output = $p.StandardOutput.ReadToEnd()
$exitcode = $p.ExitCode
$p.Dispose()
$exitcode
$output
}
#download installer
invoke-webrequest "ftp://ftp.adobe.com/pub/adobe/reader/win/AcrobatDC/1500720033/AcroRdrDC1500720033_en_US.msi" -OutFile "$tempFolder\AcroRdrDC1500720033_en_US.msi" -ErrorAction Stop
#run installer
$res = runProcess msiexec "/i $tempFolder\AcroRdrDC1500720033_en_US.msi /qb"
#check if return code is 0
if(0 -ne $res[0]){
return "Failed to install Adobe Reader: $($res[0]) $($res[1])"
}
#download the patch
invoke-webrequest "ftp://ftp.adobe.com/pub/adobe/reader/win/AcrobatDC/1502320070/AcroRdrDCUpd1502320070.msp" -OutFile "$tempFolder\AcroRdrDCUpd1502320070.msp" -ErrorAction Stop
#install it
$res = runProcess msiexec "/p $tempFolder\AcroRdrDCUpd1502320070.msp /qb"
#check if return code is 0
if(0 -ne $res[0]){
return "Failed to install Adobe Reader DC Patch: $($res[0]) $($res[1])"
}else{
#Attempt to silently disable the auto updater if set in this script
new-itemproperty "HKLM:\Software\Policies\Adobe\Acrobat Reader\DC\FeatureLockDown" -name bUpdater -value 0 -ErrorAction SilentlyContinue
}
我認爲在這個腳本中可能不需要一些東西。它也沒有檢查版本。
在另一個網站上發現了這個,但不知道如何實現它。此外,它看起來並不像它檢查版本號。
function Is-Installed($program) {
$x86 = ((Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall") |
Where-Object { $_.GetValue("DisplayName") -like "*$program*" }).Length -gt 0;
$x64 = ((Get-ChildItem "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall") |
Where-Object { $_.GetValue("DisplayName") -like "*$program*" }).Length -gt 0;
return $x86 -or $x64;
}
理想情況下,我想在頂部設置參數,以便我可以使用其他可執行文件的模板。例如
$app_name
$app_version
$app_url
$app_filename
$app_executable
$app_arguments
任何幫助將不勝感激。
什麼任何幫助嗎?爲你設計一個交鑰匙解決方案? (這不是本網站的目的。) –