You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.5 KiB
39 lines
1.5 KiB
[CmdletBinding()]
|
|
param()
|
|
|
|
$ErrorActionPreference = 'Stop'
|
|
$repositoryRoot = $PSScriptRoot
|
|
$syncScript = Join-Path $repositoryRoot 'sync-skills.ps1'
|
|
|
|
if (-not (Test-Path -LiteralPath $syncScript)) {
|
|
throw "Sync script not found at '$syncScript'."
|
|
}
|
|
|
|
$action = New-ScheduledTaskAction `
|
|
-Execute 'powershell.exe' `
|
|
-Argument "-NoProfile -NonInteractive -ExecutionPolicy Bypass -File `"$syncScript`""
|
|
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Sunday -At 10:00AM
|
|
|
|
# Must run as the interactive user, NOT SYSTEM. The git remote is HTTPS and
|
|
# authenticates via credential.helper=manager, whose vault is per-user — SYSTEM
|
|
# cannot read it, so `git fetch origin main` fails and the whole sync aborts.
|
|
# Interactive logon keeps access to that vault; StartWhenAvailable catches up a
|
|
# missed run at the next logon.
|
|
$currentUser = "$env:USERDOMAIN\$env:USERNAME"
|
|
$principal = New-ScheduledTaskPrincipal -UserId $currentUser -LogonType Interactive -RunLevel Limited
|
|
$settings = New-ScheduledTaskSettingsSet `
|
|
-StartWhenAvailable `
|
|
-RunOnlyIfNetworkAvailable `
|
|
-MultipleInstances IgnoreNew `
|
|
-ExecutionTimeLimit (New-TimeSpan -Hours 1)
|
|
|
|
Register-ScheduledTask `
|
|
-TaskName 'PromptWorks Weekly Skill Sync' `
|
|
-Action $action `
|
|
-Trigger $trigger `
|
|
-Principal $principal `
|
|
-Settings $settings `
|
|
-Description 'Mirrors custom Microsoft Scout skills to PromptWorks.' `
|
|
-Force | Out-Null
|
|
|
|
Write-Host "Registered 'PromptWorks Weekly Skill Sync' to run as $currentUser, Sundays at 10:00 AM."
|
|
|