Update Winget-Upgrade.ps1

draft-user-approval
romanitho 2023-04-23 11:36:28 +02:00
parent 43eb83d061
commit 84d60340f8
1 changed files with 47 additions and 7 deletions

View File

@ -219,6 +219,48 @@ if (Test-Network) {
$Log | out-file -filepath $LogFile -Append $Log | out-file -filepath $LogFile -Append
} }
#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 #Count good update installations
$Script:InstallOK = 0 $Script:InstallOK = 0
@ -275,12 +317,10 @@ if (Test-Network) {
if ($IsSystem) { if ($IsSystem) {
#User check routine from: https://stackoverflow.com/questions/23219718/powershell-script-to-see-currently-logged-in-users-domain-and-machine-status #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) $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..." Write-Log "No explorer process found / Nobody interactively logged on..."
} }
Else Else {
{
#Run WAU in user context if the user task exist #Run WAU in user context if the user task exist
$UserScheduledTask = Get-ScheduledTask -TaskName "Winget-AutoUpdate-UserContext" -ErrorAction SilentlyContinue $UserScheduledTask = Get-ScheduledTask -TaskName "Winget-AutoUpdate-UserContext" -ErrorAction SilentlyContinue
if ($UserScheduledTask) { if ($UserScheduledTask) {
@ -294,7 +334,7 @@ if (Test-Network) {
Start-ScheduledTask $UserScheduledTask.TaskName -ErrorAction SilentlyContinue Start-ScheduledTask $UserScheduledTask.TaskName -ErrorAction SilentlyContinue
Exit 0 Exit 0
} }
elseif (!$UserScheduledTask){ elseif (!$UserScheduledTask) {
Write-Log "User context execution not installed..." Write-Log "User context execution not installed..."
} }
} }