Files
Powershell-Scripts/App Install or Upgrade Scripts/App - Webex - Install or Upgrade.ps1
T

68 lines
2.6 KiB
PowerShell
Raw Normal View History

<#
Author: Gabe Kerntke
Date: 02-20-2024
.Synopsis
Script installs Webex silently on machines that do not already have it. Script copies the installer from the probe and deletes the installer once the install is finsihed.
.Modified
2024-02-20 (GabeK) - Original script created
2025-06-30 (GabeK) - Updated to use functions script
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory = $false)]
$App_Name = "Webex",
[Parameter(Mandatory = $false)]
$File_Name_Prefix = "Webex-x64",
[Parameter(Mandatory = $false)]
$File_Name_Extension = "msi",
[Parameter(Mandatory = $false)]
$Install_Parameters = "ACCEPT_EULA=TRUE ALLUSERS=1 /qn",
[Parameter(Mandatory = $false)]
$EPCache_Folder = "3rd Party Patches\$App_Name",
[Parameter(Mandatory = $false)]
$Version_URL = "https://help.webex.com/en-us/article/mqkve8/Webex-App-%7C-Release-notes"
)
#Download the HTML content
$html = (New-Object System.Net.WebClient).DownloadString($Version_URL)
# Split the content on ">" and "<" characters to extract the text content
$html_split = $html.Split([char[]]@(">", "<"), [StringSplitOptions]::RemoveEmptyEntries) | Select-Object -First 900
$Sort = $html_split -like "Windows*"
# Filter out only the rows containing version numbers
$Versions = $Sort | Where-Object { $_ -match "\d+\.\d+\.\d+" } | ForEach-Object { $_ -replace "&#xA0;", "" }
$Online_Version = $Versions -replace "[^\d*\.?/\d*]" , '' -replace "/" , ''
$DownloadURL = "https://binaries.webex.com/WebexTeamsDesktop-Windows-Gold/Webex_en.msi"
$File_Name = "$File_Name_Prefix-$Online_Version.$File_Name_Extension"
#Region Script Start
If ((Test-Path "C:\Temp\Script Cache") -eq $False) { New-Item -ItemType directory -Path "C:\Temp\Script Cache" }
Invoke-WebRequest -UseBasicParsing "https://scripts.gabesville.com/Gabesville/Powershell-Scripts/raw/branch/main/Functions%20Scripts/Functions.ps1" -outfile "C:\Temp\Script Cache\Functions.ps1"
. "C:\Temp\Script Cache\Functions.ps1"
#Check to see if program is installed
$Applist = Get-Software | Sort-Object -Descending
If ($Applist.DisplayName -like "*$App_Name*") {
#Get currently installed version
$Local_Version = Get-Software | Where-Object { $_.DisplayName -like "*$App_Name*" } | Select-Object -ExpandProperty DisplayVersion
#Comparing version already installed to what is online
If ([version]$Local_Version -lt [version]$Online_Version) {
Test-Probe_Online
Close-App
Install-App
}
Else { Write-Host "$App_Name already on latest version (Installed version: $Local_Version)" }
}
Else {
Test-Probe_Online
Install-App
}
#Region Script End