42 lines
1.8 KiB
PowerShell
42 lines
1.8 KiB
PowerShell
# 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"
|