Je travaille sur un script PowerShell qui fournit une sortie console et redémarre le système plusieurs fois pendant le fonctionnement du script. Dès qu'il démarre, il s'enregistre en tant que tâche planifiée afin de pouvoir reprendre là où il s'est arrêté après les redémarrages :
$JobArgs = @(
$ScriptPath
($ArgumentList -join ' ')
)
$JobScript = {
param(
[string] $ScriptPath,
[string] $Arguments
)
$PSArgs = @(
'-NoExit'
'-NoLogo'
'-NoProfile'
"-File $ScriptPath $Arguments"
)
Start-Process powershell.exe -ArgumentList $PSArgs -Wait
}
$AtLogonTrigger = New-JobTrigger -AtLogOn -User $LoginUser
$JobProperties = @{
'Name' = $JobName
'Trigger' = $AtLogonTrigger
'ScheduledJobOption' = New-ScheduledJobOption -RunElevated
'ScriptBlock' = $JobScript
'ArgumentList' = $JobArgs
}
$Job = Register-ScheduledJob @JobProperties -ErrorAction Stop
Cependant, bien que cela fasse ce que je veux, cela se fait en arrière-plan alors que je préférerais que la fenêtre PowerShell soit visible. Il ne semble pas non plus qu'il s'agisse d'une caractéristique intrinsèque de PowerShell ; il suffit de lancer la commande notepad.exe
via Start-Process
fournit également une instance cachée du bloc-notes.
Bien que je sois conscient que je ne devrais probablement pas me fier à la sortie de la console, c'est suffisant pour mes besoins.
Existe-t-il un moyen d'invoquer un processus de premier plan à partir d'un travail en arrière-plan ?