Question
création tâche de type event (scedule.service)
- blanc
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 54
- Remerciements reçus 0
il y a 15 ans 9 mois #7055
par blanc
création tâche de type event (scedule.service) a été créé par blanc
Bonjour,
Je n'arrive pas à créer une tâche avec schedule.service qui se déclenche lorsqu'un événement est écrit dans mon journal d'événements.
La création du journal est correcte. Le message d'erreur porte sur la property \"subscription\". Pour la construire, j'ai d'abord créé une tâche avec le gestionnaire de serveur et exportée, ce qui produit un fichier xml qui, si j'ai bien compris, contient l'information utile.
J'utilise de code suivant :[code:1]#pour créer le log
remove-eventlog -source \"Enseigne\"
remove-eventlog -logname \"lancementVM\"
new-eventlog -logname \"lancementVM\" -source \"Enseigne\"
# pour écrire une entrée dans ce log
Write-EventLog -source \"Enseigne\" -logname lancementvm -Eventid 2 -message \"test\"
# pour créer la tâche qui attend une écriture dans le log afin de lancer un script
#les constantes
Set-Variable -name 'TriggerTypeLogon' -value 9 -option constant -force
Set-Variable -name 'TriggerTypeDaily' -value 2 -option constant -force
Set-Variable -name 'TriggerTypeBoot' -value 8 -option constant -force
Set-Variable -name 'TriggerTypeEvent' -value 0 -option constant -force
Set-Variable -name 'ActionTypeExecutable' -value 0 -option constant -force
#creation d'un objet
$TaskService=New-Object -ComObject \"Schedule.service\"
#connexion au service du serveur local
$TaskService.Connect()
#on se place à la racine
$root=$TaskService.GetFolder(\"\\"«»)
# on crée un rep
$rep_Task=$root.CreateFolder(\"\Enseigne\"«»)
$monRoot=$TaskService.GetFolder(\"\Enseigne\"«»)
#on crée une tâche
$taskDefinition=$TaskService.NewTask(0)
# on crée un objet settings pour configurer cette tâche
$taskSettings=$taskDefinition.Settings
# cette tâche démarrera ....
$taskSettings.StartWhenAvailable=$true
$taskSettings.enabled=$true
$taskSettings.Hidden=$true
$taskSettings.DisallowStartIfOnBatteries=$true
# pour obtenir une élévation de privilège
$taskDefinition.Principal.RunLevel = 1
# on ouvre la collection des triggers
$triggers=$taskDefinition.Triggers
# les variables décrivant le programme à lancer
$scriptDemapp=$($env:windir+'\pnp\poste\LancementVM.ps1 -mode task')
$prgPS=\"$env:windir\System32\WindowsPowerShell\v1.0\powershell.exe\"
$paramPrg=\"-ExecutionPolicy remotesigned -File $scriptDemapp\"
$action=$taskDefinition.Actions.Create($ActionTypeExecutable)
$action.path=$prgPS
$action.arguments=$paramPrg
# on crée un trigger de type \"logon\"
$trigger = $triggers.create($TriggerTypeLogon)
# le trigger est infini
$trigger.ExecutionTimeLimit=\"PT0S\"
# un nom pour ce trigger
$trigger.Id=\"loggon Trigger\"
# on crée un trigger de type \"event
$trigger2 = $triggers.create($TriggerTypeEvent)
$trigger2.ExecutionTimeLimit=\"PT0S\"
$trigger2.Id=\"Event Trigger\"
$trigger2.subscription = '<QueryList><Query Id=\"0\" path=\"lancementVM\"><Select Path=\"lancementVM\">*[System[EventID=2]]</Select></Query></QueryList>'
$maTache=$monRoot.RegisterTaskDefinition(\"LancementVM\", $taskDefinition, 6, \"system\", $null, 5 )
[/code:1]
c'est RegisterTaskDefinition qui génère une erreur.
Mon journal est bien créé:
PS C:\windows\system32> Get-EventLog -logname \"LancementVM\"
Index Time EntryType Source InstanceID Message
----
5 juin 22 11:01 Information Enseigne 2 on lance la vm
Si on erreur saute aux yeux, merci de m'éclairer.
Je n'arrive pas à créer une tâche avec schedule.service qui se déclenche lorsqu'un événement est écrit dans mon journal d'événements.
La création du journal est correcte. Le message d'erreur porte sur la property \"subscription\". Pour la construire, j'ai d'abord créé une tâche avec le gestionnaire de serveur et exportée, ce qui produit un fichier xml qui, si j'ai bien compris, contient l'information utile.
J'utilise de code suivant :[code:1]#pour créer le log
remove-eventlog -source \"Enseigne\"
remove-eventlog -logname \"lancementVM\"
new-eventlog -logname \"lancementVM\" -source \"Enseigne\"
# pour écrire une entrée dans ce log
Write-EventLog -source \"Enseigne\" -logname lancementvm -Eventid 2 -message \"test\"
# pour créer la tâche qui attend une écriture dans le log afin de lancer un script
#les constantes
Set-Variable -name 'TriggerTypeLogon' -value 9 -option constant -force
Set-Variable -name 'TriggerTypeDaily' -value 2 -option constant -force
Set-Variable -name 'TriggerTypeBoot' -value 8 -option constant -force
Set-Variable -name 'TriggerTypeEvent' -value 0 -option constant -force
Set-Variable -name 'ActionTypeExecutable' -value 0 -option constant -force
#creation d'un objet
$TaskService=New-Object -ComObject \"Schedule.service\"
#connexion au service du serveur local
$TaskService.Connect()
#on se place à la racine
$root=$TaskService.GetFolder(\"\\"«»)
# on crée un rep
$rep_Task=$root.CreateFolder(\"\Enseigne\"«»)
$monRoot=$TaskService.GetFolder(\"\Enseigne\"«»)
#on crée une tâche
$taskDefinition=$TaskService.NewTask(0)
# on crée un objet settings pour configurer cette tâche
$taskSettings=$taskDefinition.Settings
# cette tâche démarrera ....
$taskSettings.StartWhenAvailable=$true
$taskSettings.enabled=$true
$taskSettings.Hidden=$true
$taskSettings.DisallowStartIfOnBatteries=$true
# pour obtenir une élévation de privilège
$taskDefinition.Principal.RunLevel = 1
# on ouvre la collection des triggers
$triggers=$taskDefinition.Triggers
# les variables décrivant le programme à lancer
$scriptDemapp=$($env:windir+'\pnp\poste\LancementVM.ps1 -mode task')
$prgPS=\"$env:windir\System32\WindowsPowerShell\v1.0\powershell.exe\"
$paramPrg=\"-ExecutionPolicy remotesigned -File $scriptDemapp\"
$action=$taskDefinition.Actions.Create($ActionTypeExecutable)
$action.path=$prgPS
$action.arguments=$paramPrg
# on crée un trigger de type \"logon\"
$trigger = $triggers.create($TriggerTypeLogon)
# le trigger est infini
$trigger.ExecutionTimeLimit=\"PT0S\"
# un nom pour ce trigger
$trigger.Id=\"loggon Trigger\"
# on crée un trigger de type \"event
$trigger2 = $triggers.create($TriggerTypeEvent)
$trigger2.ExecutionTimeLimit=\"PT0S\"
$trigger2.Id=\"Event Trigger\"
$trigger2.subscription = '<QueryList><Query Id=\"0\" path=\"lancementVM\"><Select Path=\"lancementVM\">*[System[EventID=2]]</Select></Query></QueryList>'
$maTache=$monRoot.RegisterTaskDefinition(\"LancementVM\", $taskDefinition, 6, \"system\", $null, 5 )
[/code:1]
c'est RegisterTaskDefinition qui génère une erreur.
Mon journal est bien créé:
PS C:\windows\system32> Get-EventLog -logname \"LancementVM\"
Index Time EntryType Source InstanceID Message
----
5 juin 22 11:01 Information Enseigne 2 on lance la vm
Si on erreur saute aux yeux, merci de m'éclairer.
Connexion ou Créer un compte pour participer à la conversation.
- blanc
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 54
- Remerciements reçus 0
il y a 15 ans 9 mois #7057
par blanc
Réponse de blanc sur le sujet Re:création tâche de type event (scedule.service)
c'était juste une coquille !
$trigger2.subscription = '<QueryList><Query Id=\"0\"><Select Path=\"lancementVM\">*[System[EventID=2]]</
$trigger2.subscription = '<QueryList><Query Id=\"0\"><Select Path=\"lancementVM\">*[System[EventID=2]]</
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.047 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- création tâche de type event (scedule.service)