27 lines
2.1 KiB
PowerShell
27 lines
2.1 KiB
PowerShell
#Requires -Version 7.2
|
|
[CmdletBinding()]
|
|
param(
|
|
[string]$ControlRoot = (Join-Path ([Environment]::GetFolderPath('UserProfile')) '.jobjakt-backlog/single-user-local'),
|
|
[string]$Name = 'Jobjakt development backlog',
|
|
[switch]$Install
|
|
)
|
|
$ErrorActionPreference='Stop'
|
|
$root=[IO.Path]::GetFullPath($ControlRoot)
|
|
$config=Get-Content -LiteralPath (Join-Path $root 'config.json') -Raw | ConvertFrom-Json
|
|
$check='import sys,json; from pathlib import Path; root=Path(sys.argv[1]); sys.path.insert(0,str(root)); import local_mode; c=json.loads((root/"config.json").read_text()); local_mode.require_unattended(root,c); local_mode.validate_identity(c,local_mode.detect_identity()[1])'
|
|
& $config.pythonExecutable -c $check $root
|
|
if ($LASTEXITCODE -ne 0) { throw 'Task registration requires current native filesystem/network/owner-key qualification; no task created' }
|
|
if (-not $Install) {
|
|
Write-Output "Preview: limited task '$Name', every 15 minutes and at logon, command start (preserves manual pause). Add -Install to register."
|
|
exit 0
|
|
}
|
|
if (-not [Environment]::UserInteractive -or $env:JOBBJAKT_ORCHESTRATED) { throw 'Register from your operator terminal' }
|
|
$action=New-ScheduledTaskAction -Execute $config.powershellExecutable -WorkingDirectory $root `
|
|
-Argument ('-NoProfile -WindowStyle Hidden -File "'+(Join-Path $root 'Run-JobjaktBacklog.ps1')+'" -Command start -ControlRoot "'+$root+'"')
|
|
$repeat=New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1) -RepetitionInterval (New-TimeSpan -Minutes 15)
|
|
$logon=New-ScheduledTaskTrigger -AtLogOn -User $config.windowsUsername
|
|
$principal=New-ScheduledTaskPrincipal -UserId $config.windowsUsername -LogonType Interactive -RunLevel Limited
|
|
$settings=New-ScheduledTaskSettingsSet -MultipleInstances IgnoreNew -ExecutionTimeLimit (New-TimeSpan -Hours 8)
|
|
Register-ScheduledTask -TaskName $Name -Action $action -Trigger @($repeat,$logon) -Principal $principal -Settings $settings | Out-Null
|
|
Write-Output 'Registered for the existing login. A locked desktop is supported; logged-out execution needs separate Task Scheduler credential setup. No wake/sleep/security setting changed.'
|