From d17435962ac5881b7ebaf0537a749158c0cc41c5 Mon Sep 17 00:00:00 2001 From: dyoder Date: Wed, 9 Sep 2020 16:59:40 -0400 Subject: [PATCH] organization and logic updates --- Start-Windows10UpdateAssistant.ps1 | 42 ++++++++++++++---------------- Tools.ps1 | 14 +++++----- 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/Start-Windows10UpdateAssistant.ps1 b/Start-Windows10UpdateAssistant.ps1 index f29fc30..adba438 100644 --- a/Start-Windows10UpdateAssistant.ps1 +++ b/Start-Windows10UpdateAssistant.ps1 @@ -1,54 +1,50 @@ ## Make sure the computer is running Windows 10 -If ( ([System.Environment]::OSVersion.Version).Major -ge 10 ) { +If ( IsWindowsVersion -ge "10.0" ) { ## Make sure the endpoint isn't already running 2004 - If ( ([System.Environment]::OSVersion.Version).Build -lt 19041 ) { + If ( IsWindowsBuild -lt 19041 ) { ## Set the directory where the Windows Update Assistant will be downloaded to - $DOWNLOADS = "${Env:TEMP}" + $DOWNLOADS = $Env:TEMP ## URL to the 2004 version of the Windows Update Assistant - ## If $URL is already defined when the script is run, just use that value - If ( !($URL) ) { $URL = 'https://download.microsoft.com/download/8/3/c/83c39dca-2d27-4c24-b98b-0a4d6d921c80/Windows10Upgrade9252.exe' } + $URL = 'https://download.microsoft.com/download/8/3/c/83c39dca-2d27-4c24-b98b-0a4d6d921c80/Windows10Upgrade9252.exe' ## Uninstall previous Windows 10 Update Assistant If ( Test-Path "${Env:SystemDrive}\Windows10Upgrade\Windows10UpgraderApp.exe" ) { Write-Output "Uninstalling existing Windows 10 Update Assistant" - Start-Process "${Env:SystemDrive}\Windows10Upgrade\Windows10UpgraderApp.exe" -ArgumentList '/ForceUninstall' -Wait + Try { Start-Process "${Env:SystemDrive}\Windows10Upgrade\Windows10UpgraderApp.exe" -ArgumentList '/ForceUninstall' -Wait } + Catch { Write-Output $_.Exception.Message } } - ## Create download directory if not using $Env:TEMP - #If (!( Test-Path $DOWNLOADS )) - #{ - # Write-Output "Creating "${DOWNLOADS}" - # New-Item -ItemType Directory -Path $DOWNLOADS - #} - ## Download Windows 10 Update Assistant $FILENAME = Split-Path $URL -leaf If ( Test-Path "${DOWNLOADS}\${FILENAME}" ) { Write-Output "Deleting existing installer: ${DOWNLOADS}\${FILENAME}" - Remove-Item "${DOWNLOADS}\${FILENAME}" -Force -ErrorAction SilentlyContinue + Try { Remove-Item "${DOWNLOADS}\${FILENAME}" -Force -ErrorAction SilentlyContinue } + Catch { Write-Output $_.Exception.Message } } Write-Output "Downloading ${URL} to ${DOWNLOADS}\${FILENAME}" - (New-Object System.Net.WebClient).DownloadFile($URL,"${DOWNLOADS}\${FILENAME}") + Try { (New-Object System.Net.WebClient).DownloadFile($URL,"${DOWNLOADS}\${FILENAME}") } + Catch { Write-Output $_.Exception.Message } ## Install and run the Windows 10 Update Assistant If ( Test-Path "${DOWNLOADS}\${FILENAME}" ) { Write-Output "Launching installer: ${DOWNLOADS}\${FILENAME}" - Start-Process -FilePath "${DOWNLOADS}\${FILENAME}" -Wait - } + Try { Start-Process -FilePath "${DOWNLOADS}\${FILENAME}" -Wait } + Catch { Write-Output $_.Exception.Message } - ## Delete the downloaded program - If ( Test-Path "${DOWNLOADS}\${FILENAME}" ) - { Write-Output "Deleting installer: ${DOWNLOADS}\${FILENAME}" - Remove-Item "${DOWNLOADS}\${FILENAME}" + Try { Remove-Item "${DOWNLOADS}\${FILENAME}" } + Catch { Write-Output $_.Exception.Message } } + Else { Write-Output "${DOWNLOADS}\${FILENAME} does not exist" } - } Else { Write-Output "This endpoint is already up to date." } + } + Else { Write-Output "This endpoint is already up to date." } -} Else { Write-Output "This endpoint is not running Windows 10." } +} +Else { Write-Output "This endpoint is not running Windows 10." } diff --git a/Tools.ps1 b/Tools.ps1 index 405418f..a31b3da 100644 --- a/Tools.ps1 +++ b/Tools.ps1 @@ -58,6 +58,7 @@ Return [version]$Return.Trim('.') } ## Function to compare current Windows version with a supplied version +## The value supplied must be a string and must include at least 1 decimal Function IsWindowsVersion { param( @@ -78,15 +79,16 @@ switch ($PSCmdlet.ParameterSetName) } } -## Function to compare current Windows version with a supplied version +## Function to compare current Windows build with a supplied version +## The value supplied must be an int Function IsWindowsBuild { param( - [Parameter(Mandatory=$true,ParameterSetName='gt')][string]$gt, - [Parameter(Mandatory=$true,ParameterSetName='ge')][string]$ge, - [Parameter(Mandatory=$true,ParameterSetName='lt')][string]$lt, - [Parameter(Mandatory=$true,ParameterSetName='le')][string]$le, - [Parameter(Mandatory=$true,ParameterSetName='eq')][string]$eq + [Parameter(Mandatory=$true,ParameterSetName='gt')][int]$gt, + [Parameter(Mandatory=$true,ParameterSetName='ge')][int]$ge, + [Parameter(Mandatory=$true,ParameterSetName='lt')][int]$lt, + [Parameter(Mandatory=$true,ParameterSetName='le')][int]$le, + [Parameter(Mandatory=$true,ParameterSetName='eq')][int]$eq ) [int]$WindowsBuild = [System.Environment]::OSVersion.Version.Build switch ($PSCmdlet.ParameterSetName)