# Installe l'agent Stream Control comme tâche planifiée Windows. # # L'agent doit s'exécuter dans la session interactive de l'utilisateur qui lance # OBS : un service Windows classique tourne en session 0 et ne verrait pas OBS. # On utilise donc une tâche « à l'ouverture de session » avec redémarrage auto. # # Usage (PowerShell administrateur) : # .\windows-agent-task.ps1 -AgentDir 'C:\stream-control-agent' -RunAsUser 'VM01\obs' param( [string]$AgentDir = 'C:\stream-control-agent', [string]$RunAsUser = "$env:USERDOMAIN\$env:USERNAME", [string]$TaskName = 'StreamControlAgent' ) $ErrorActionPreference = 'Stop' $node = (Get-Command node).Source $entry = Join-Path $AgentDir 'dist\index.js' if (-not (Test-Path $entry)) { throw "Agent introuvable : $entry — copie d'abord packages/agent (dist + node_modules) dans $AgentDir" } if (-not (Test-Path (Join-Path $AgentDir 'agent.config.json'))) { Write-Warning "agent.config.json absent de $AgentDir : l'agent refusera de démarrer sans jeton." } $action = New-ScheduledTaskAction -Execute $node -Argument "`"$entry`"" -WorkingDirectory $AgentDir $trigger = New-ScheduledTaskTrigger -AtLogOn -User $RunAsUser $principal = New-ScheduledTaskPrincipal -UserId $RunAsUser -LogonType Interactive -RunLevel Limited $settings = New-ScheduledTaskSettingsSet ` -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries ` -RestartCount 999 -RestartInterval (New-TimeSpan -Minutes 1) ` -ExecutionTimeLimit ([TimeSpan]::Zero) -MultipleInstances IgnoreNew Register-ScheduledTask -TaskName $TaskName -Action $action -Trigger $trigger ` -Principal $principal -Settings $settings -Force | Out-Null Start-ScheduledTask -TaskName $TaskName Write-Host "Tâche « $TaskName » installée et démarrée pour $RunAsUser." Write-Host "Journal : Get-ScheduledTaskInfo -TaskName $TaskName"