Merge pull request #494 from Romanitho/notif-optimized
Review system contect notification when ServiceUI is called.pull/495/head
commit
9f632ede0d
|
@ -12,31 +12,38 @@ Get-ChildItem "$WorkingDir\functions" | ForEach-Object { . $_.FullName }
|
||||||
$null = cmd /c ''
|
$null = cmd /c ''
|
||||||
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||||||
|
|
||||||
#Check if running account is system or interactive logon
|
|
||||||
$Script:IsSystem = [System.Security.Principal.WindowsIdentity]::GetCurrent().IsSystem
|
|
||||||
|
|
||||||
#Log initialisation
|
#Log initialisation
|
||||||
$LogFile = "$WorkingDir\logs\updates.log"
|
$LogFile = "$WorkingDir\logs\updates.log"
|
||||||
|
|
||||||
|
#Check if running account is system or interactive logon
|
||||||
|
$Script:IsSystem = [System.Security.Principal.WindowsIdentity]::GetCurrent().IsSystem
|
||||||
|
#Check for current session ID (O = system without ServiceUI)
|
||||||
|
$Script:SessionID = [System.Diagnostics.Process]::GetCurrentProcess().SessionId
|
||||||
|
|
||||||
|
#Check if running as system
|
||||||
if ($IsSystem) {
|
if ($IsSystem) {
|
||||||
#Check if any connected user when running as system
|
#Check if running with session ID 0
|
||||||
$explorerprocesses = @(Get-CimInstance -Query "SELECT * FROM Win32_Process WHERE Name='explorer.exe'" -ErrorAction SilentlyContinue)
|
if ($SessionID -eq 0) {
|
||||||
#Check if ServiceUI exists
|
#Check if ServiceUI exists
|
||||||
$ServiceUI = Test-Path "$WorkingDir\ServiceUI.exe"
|
$ServiceUI = Test-Path "$WorkingDir\ServiceUI.exe"
|
||||||
If ($explorerprocesses.Count -gt 0 -and $ServiceUI) {
|
if ($ServiceUI) {
|
||||||
#User connected, Check for current session ID (O = system)
|
#Check if any connected user
|
||||||
$SessionID = [System.Diagnostics.Process]::GetCurrentProcess().SessionId
|
$explorerprocesses = @(Get-CimInstance -Query "SELECT * FROM Win32_Process WHERE Name='explorer.exe'" -ErrorAction SilentlyContinue)
|
||||||
if ($SessionID -eq 0) {
|
if ($explorerprocesses.Count -gt 0) {
|
||||||
#Rerun WAU in system context with ServiceUI
|
#Rerun WAU in system context with ServiceUI
|
||||||
& $WorkingDir\ServiceUI.exe -process:explorer.exe $env:windir\System32\wscript.exe \`"$WorkingDir\Invisible.vbs\`" \`"powershell.exe -NoProfile -ExecutionPolicy Bypass -File \`"\`"$WorkingDir\winget-upgrade.ps1\`"\`"\`"
|
& $WorkingDir\ServiceUI.exe -process:explorer.exe $env:windir\System32\wscript.exe \`"$WorkingDir\Invisible.vbs\`" \`"powershell.exe -NoProfile -ExecutionPolicy Bypass -File \`"\`"$WorkingDir\winget-upgrade.ps1\`"\`"\`"
|
||||||
Exit 0
|
Exit 0
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-ToLog -LogMsg "CHECK FOR APP UPDATES (System context)" -IsHeader
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Write-ToLog -LogMsg "CHECK FOR APP UPDATES (System context with ServiceUI)" -IsHeader
|
Write-ToLog -LogMsg "CHECK FOR APP UPDATES (System context - No ServiceUI)" -IsHeader
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Write-ToLog -LogMsg "CHECK FOR APP UPDATES (System context)" -IsHeader
|
Write-ToLog -LogMsg "CHECK FOR APP UPDATES (System context - Connected user)" -IsHeader
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -33,7 +33,7 @@ function Start-NotifTask {
|
||||||
|
|
||||||
$XMLimagepath = "$WorkingDir\icons\$MessageType.png"
|
$XMLimagepath = "$WorkingDir\icons\$MessageType.png"
|
||||||
if (Test-Path $XMLimagepath) {
|
if (Test-Path $XMLimagepath) {
|
||||||
# Creation of a image node
|
# Creation of an image node
|
||||||
$XMLimage = $ToastTemplate.CreateElement("image")
|
$XMLimage = $ToastTemplate.CreateElement("image")
|
||||||
$XMLbinding.AppendChild($XMLimage) | Out-Null
|
$XMLbinding.AppendChild($XMLimage) | Out-Null
|
||||||
$XMLimageAtt1 = $ToastTemplate.CreateAttribute("placement")
|
$XMLimageAtt1 = $ToastTemplate.CreateAttribute("placement")
|
||||||
|
@ -132,8 +132,8 @@ function Start-NotifTask {
|
||||||
$ToastTemplate.toast.SetAttribute("launch", $OnClickAction) | Out-Null
|
$ToastTemplate.toast.SetAttribute("launch", $OnClickAction) | Out-Null
|
||||||
}
|
}
|
||||||
|
|
||||||
#if not "Interactive" user, run as system
|
#if not "Interactive" user, run Winget-AutoUpdate-Notify scheduled task
|
||||||
if ($IsSystem) {
|
if ($SessionID -eq 0) {
|
||||||
|
|
||||||
#Save XML to File
|
#Save XML to File
|
||||||
$ToastTemplateLocation = "$($WAUConfig.InstallLocation)\config\"
|
$ToastTemplateLocation = "$($WAUConfig.InstallLocation)\config\"
|
||||||
|
|
|
@ -26,7 +26,7 @@ function Write-ToLog {
|
||||||
|
|
||||||
#If header requested
|
#If header requested
|
||||||
if ($IsHeader) {
|
if ($IsHeader) {
|
||||||
$Log = " `n###########################################################`n# $LogMsg - $(Get-Date -Format (Get-culture).DateTimeFormat.ShortDatePattern)`n###########################################################`n"
|
$Log = " `n################################################################`n# $(Get-Date -Format (Get-culture).DateTimeFormat.ShortDatePattern) - $LogMsg`n################################################################"
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$Log = "$(Get-Date -UFormat "%T") - $LogMsg"
|
$Log = "$(Get-Date -UFormat "%T") - $LogMsg"
|
||||||
|
|
Loading…
Reference in New Issue