Files
Powershell-Scripts/App Update Scripts/Dell Command Update - Update Everything.ps1
T

104 lines
4.2 KiB
PowerShell
Raw Normal View History

2025-08-08 17:12:12 +00:00
<#
Author: Gabe Kerntke
Date: 02-18-2025
.Synopsis
.Modified
2025-02-18 (GabeK) - Original script created
2025-07-01 (GabeK) - Script updated to use version 5.5 and use functions script
#>
# Variables #
$App_Name = "Dell Command"
$File_Name_Prefix = "Dell-Command-x64"
$File_Name_Extension = "exe"
$Install_Parameters = "/s"
$EPCache_Folder = "3rd Party Patches\$App_Name"
$Version_URL = (Invoke-WebRequest -UseBasicParsing "https://www.dell.com/support/kbdoc/en-us/000177325/dell-command-update").Content | Select-String -Pattern '<td(.*?)</td>' -AllMatches |
ForEach-Object { $_.Matches } | ForEach-Object { $_.Groups[1].Value } | Select-Object -First 1
$A = $Version_URL.Substring(30)
$Online_Version = $A.Substring(0, $A.Length - 10) -replace "[^\d*\.?\d*$/]" , '' -replace "/" , ""
$DownloadURL = "https://downloads.dell.com/FOLDER13309588M/1/Dell-Command-Update-Windows-Universal-Application_C8JXV_WIN64_5.5.0_A00.EXE"
$File_Name = "$File_Name_Prefix-$Online_Version.$File_Name_Extension"
$Manufacturer = (Get-CimInstance Win32_ComputerSystem).Manufacturer
# Functions #
Function Initialize-Commands {
.\dcu-cli.exe /scan
.\dcu-cli.exe /applyUpdates -silent
$BLinfo = Get-Bitlockervolume
If ($blinfo.ProtectionStatus -eq 'On' -and $blinfo.EncryptionPercentage -eq '100') {
Manage-bde -Protectors -Disable C: -RebootCount 1
}
Restart-Computer -Force
}
Function Invoke-Commands {
If (Test-Path "C:\Program Files\Dell\CommandUpdate\") {
Set-Location "C:\Program Files\Dell\CommandUpdate\"
Initialize-Commands
}
ElseIf (Test-Path "C:\Program Files (x86)\Dell\CommandUpdate\") {
Set-Location "C:\Program Files (x86)\Dell\CommandUpdate\"
Initialize-Commands
}
Else { Write-Host "Dell Command Update isn't installed, trying running the script again." }
}
Function Uninstall-App {
$Uninstall = Get-WmiObject Win32_Product -filter "name like '$App_Name%'" | ForEach-Object { $_.Uninstall() }
$Value = $Uninstall | Select-Object -ExpandProperty ReturnValue
If ($Value -eq "0") {
Write-Host "$App_Name uninstalled successfully, please rerun script to continue."
$BLinfo = Get-Bitlockervolume
If ($blinfo.ProtectionStatus -eq 'On' -and $blinfo.EncryptionPercentage -eq '100') {
Manage-bde -Protectors -Disable C: -RebootCount 1
}
Restart-Computer -Force
}
Else {
Write-Host "Failed to uninstall $App_Name, exiting script"
Exit
}
}
Function Install-dot_net {
Invoke-WebRequest -UseBasicParsing "https://builds.dotnet.microsoft.com/dotnet/WindowsDesktop/8.0.17/windowsdesktop-runtime-8.0.17-win-x64.exe" -OutFile "C:\Temp\windowsdesktop-runtime-8.0.17-win-x64.exe"
Start-Process "C:\Temp\Script Cache\windowsdesktop-runtime-8.0.17-win-x64.exe" -ArgumentList "/install /quiet /norestart"
Start-Sleep 15
Remove-Item "C:\Temp\Script Cache\windowsdesktop-runtime-8.0.17-win-x64.exe" -Force
}
#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 if device is a dell
If ($Manufacturer -eq "Dell Inc.") {
#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 ($Local_Version -lt $Online_Version) {
Close-App
Uninstall-App
}
Else { Invoke-Commands }
}
Else {
Install-dot_net
Test-Probe_Online
Install-App
Invoke-Commands
}
}
Else { Write-Host "Device is not a Dell: $Manufacturer" }
#Region End Script