"""Temporary interactive reference via QGA; start/stop with ten-minute expiry.""" import base64 import runpy import sys from pathlib import Path root = Path(__file__).resolve().parents[3] term = runpy.run_path(str(root / 'tools/pve_term_exec.py')) vm = runpy.run_path(str(root / 'tools/pve_vm.py')) ticket, csrf = term['login']() task = 'VDIGPUResponseReference20261111' folder = r'C:\ProgramData\VDI\gpu-response-20261111' if sys.argv[1] == 'start': encoded = base64.b64encode(Path(__file__).with_name('windows-response.ps1').read_bytes()).decode() ps = r"""$ErrorActionPreference='Stop'; $folder='""" + folder + r"""'; New-Item -ItemType Directory -Force $folder | Out-Null if (Get-ScheduledTask -TaskName '""" + task + r"""' -ErrorAction SilentlyContinue) { throw 'Task already exists' } [IO.File]::WriteAllBytes("$folder\response.ps1",[Convert]::FromBase64String('""" + encoded + r"""')) $action=New-ScheduledTaskAction -Execute powershell.exe -Argument "-NoProfile -ExecutionPolicy Bypass -STA -WindowStyle Hidden -File $folder\response.ps1" $principal=New-ScheduledTaskPrincipal -UserId test -LogonType Interactive -RunLevel Limited $settings=New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Minutes 10) Register-ScheduledTask -TaskName '""" + task + r"""' -Action $action -Principal $principal -Settings $settings | Out-Null Start-ScheduledTask -TaskName '""" + task + r"""' 'Started temporary response reference' """ else: ps = "Stop-ScheduledTask -TaskName '" + task + "' -ErrorAction SilentlyContinue; Unregister-ScheduledTask -TaskName '" + task + "' -Confirm:$false -ErrorAction SilentlyContinue; 'Stopped temporary reference'" out, err = vm['agent'](ticket, csrf, ['powershell.exe', '-NoProfile', '-Command', ps]) print(out) if err: raise RuntimeError(err)