From 84d60340f858af92fe05df36f2106302de5efdf1 Mon Sep 17 00:00:00 2001 From: romanitho <96626929+Romanitho@users.noreply.github.com> Date: Sun, 23 Apr 2023 11:36:28 +0200 Subject: [PATCH] Update Winget-Upgrade.ps1 --- Winget-AutoUpdate/Winget-Upgrade.ps1 | 54 ++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/Winget-AutoUpdate/Winget-Upgrade.ps1 b/Winget-AutoUpdate/Winget-Upgrade.ps1 index f6434e4..bfd65ee 100644 --- a/Winget-AutoUpdate/Winget-Upgrade.ps1 +++ b/Winget-AutoUpdate/Winget-Upgrade.ps1 @@ -219,8 +219,50 @@ if (Test-Network) { $Log | out-file -filepath $LogFile -Append } - #Count good update installations - $Script:InstallOK = 0 + #Ask for user if configured + if ($WAUConfig.WAU_UserApproval -eq 1){ + Write-Log "User Approval feature enabled." + #Check for approved tag + $WAUNotifApproved = "$WorkingDir/Config/NotifApproved.txt" + + if (!(Test-Path $WAUNotifApproved)) { + $UserApprovalReturn = Invoke-UserApproval $outdated + if ($UserApprovalReturn -eq 0){ + Write-Log "-> User approval requested. Waiting for user to approve available updates..." + #Closing job, waiting for user approval + Exit 0 + } + else{ + Write-log "-> No update to request to user." + } + } + else { + Write-Log "-> User approved notification." + } + } #Ask for user if configured + if ($WAUConfig.WAU_UserApproval -eq 1){ + Write-Log "User Approval feature enabled." + #Check for approved tag + $WAUNotifApproved = "$WorkingDir/Config/NotifApproved.txt" + + if (!(Test-Path $WAUNotifApproved)) { + $UserApprovalReturn = Invoke-UserApproval $outdated + if ($UserApprovalReturn -eq 0){ + Write-Log "-> User approval requested. Waiting for user to approve available updates..." + #Closing job, waiting for user approval + Exit 0 + } + else{ + Write-log "-> No update to request to user." + } + } + else { + Write-Log "-> User approved notification." + } + } + + #Count good update installations + $Script:InstallOK = 0 #Trick under user context when -BypassListForUsers is used if ($IsSystem -eq $false -and $WAUConfig.WAU_BypassListForUsers -eq $true) { @@ -275,12 +317,10 @@ if (Test-Network) { if ($IsSystem) { #User check routine from: https://stackoverflow.com/questions/23219718/powershell-script-to-see-currently-logged-in-users-domain-and-machine-status $explorerprocesses = @(Get-WmiObject -Query "Select * FROM Win32_Process WHERE Name='explorer.exe'" -ErrorAction SilentlyContinue) - If ($explorerprocesses.Count -eq 0) - { + If ($explorerprocesses.Count -eq 0) { Write-Log "No explorer process found / Nobody interactively logged on..." } - Else - { + Else { #Run WAU in user context if the user task exist $UserScheduledTask = Get-ScheduledTask -TaskName "Winget-AutoUpdate-UserContext" -ErrorAction SilentlyContinue if ($UserScheduledTask) { @@ -294,7 +334,7 @@ if (Test-Network) { Start-ScheduledTask $UserScheduledTask.TaskName -ErrorAction SilentlyContinue Exit 0 } - elseif (!$UserScheduledTask){ + elseif (!$UserScheduledTask) { Write-Log "User context execution not installed..." } }