From 2e3c27b2398279eb93d0b3fef03b3f018b6b9e1d Mon Sep 17 00:00:00 2001 From: pikastech Date: Tue, 21 Jul 2026 10:33:29 +0200 Subject: [PATCH] fix: bound HWPOD desktop apply probes --- scripts/src/hwlab-hwpod-node.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/scripts/src/hwlab-hwpod-node.ts b/scripts/src/hwlab-hwpod-node.ts index bb9d2d31..f5263831 100644 --- a/scripts/src/hwlab-hwpod-node.ts +++ b/scripts/src/hwlab-hwpod-node.ts @@ -609,14 +609,20 @@ $versionOut = @(& $probe @launcherArgs -c "import sys;import tkinter;print(sys.v if ($LASTEXITCODE -ne 0 -or (($versionOut -join "\`n") -notlike "*$($payload.expectedVersionPrefix)*")) { throw "Python version mismatch: $($versionOut -join ' | ')" } New-Item -ItemType Directory -Force -Path $root, (Split-Path -Parent $configPath), (Split-Path -Parent $credentialPath), (Split-Path -Parent $logPath) | Out-Null $legacyStopped = @() +$legacyTasksStillEnabled = @() foreach ($taskName in $legacyTaskNames) { - Stop-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue - Disable-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue | Out-Null + $null = & schtasks.exe /Query /TN $taskName 2>$null + if ($LASTEXITCODE -eq 0) { + $null = & schtasks.exe /End /TN $taskName 2>$null + $null = & schtasks.exe /Change /TN $taskName /Disable 2>$null + if ($LASTEXITCODE -ne 0) { $legacyTasksStillEnabled += $taskName } + } } foreach ($runKey in $legacyRunKeyNames) { Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' -Name $runKey -ErrorAction SilentlyContinue } -$legacy = @(Get-CimInstance Win32_Process | Where-Object { +$allBefore = @(Get-CimInstance Win32_Process) +$legacy = @($allBefore | Where-Object { $commandLine = [string]$_.CommandLine $legacyProcessPatterns | Where-Object { $commandLine.Contains($_) } | Select-Object -First 1 }) @@ -625,7 +631,7 @@ foreach ($proc in $legacy) { $legacyStopped += [int]$proc.ProcessId } Start-Sleep -Milliseconds 500 -$old = @(Get-CimInstance Win32_Process | Where-Object { $_.CommandLine -and $_.CommandLine.Contains($scriptPath) }) +$old = @($allBefore | Where-Object { $_.CommandLine -and $_.CommandLine.Contains($scriptPath) }) foreach ($proc in $old) { Stop-Process -Id $proc.ProcessId -Force -ErrorAction SilentlyContinue } Start-Sleep -Milliseconds 500 [IO.File]::WriteAllBytes($scriptPath, [Convert]::FromBase64String([string]$payload.artifactBase64)) @@ -644,11 +650,11 @@ $stdoutPath = $logPath + '.stdout' $stderrPath = $logPath + '.stderr' Start-Process -FilePath $gui -ArgumentList @($launcherArgs + @($scriptPath)) -WorkingDirectory $root -RedirectStandardOutput $stdoutPath -RedirectStandardError $stderrPath Start-Sleep -Seconds 3 -$processes = @(Get-CimInstance Win32_Process | Where-Object { $_.Name -like 'python*.exe' -and $_.CommandLine -and $_.CommandLine.Contains($scriptPath) }) +$allAfter = @(Get-CimInstance Win32_Process) +$processes = @($allAfter | Where-Object { $_.Name -like 'python*.exe' -and $_.CommandLine -and $_.CommandLine.Contains($scriptPath) }) $explorerSessions = @(Get-Process explorer -ErrorAction SilentlyContinue | Select-Object -ExpandProperty SessionId -Unique) $interactive = @($processes | Where-Object { $explorerSessions -contains $_.SessionId }) -$legacyTasksStillEnabled = @($legacyTaskNames | Where-Object { $task = Get-ScheduledTask -TaskName $_ -ErrorAction SilentlyContinue; $task -and $task.Settings.Enabled }) -$legacyProcessesRemaining = @(Get-CimInstance Win32_Process | Where-Object { +$legacyProcessesRemaining = @($allAfter | Where-Object { $commandLine = [string]$_.CommandLine $legacyProcessPatterns | Where-Object { $commandLine.Contains($_) } | Select-Object -First 1 })