Question
[Résolu] Problème récupération tâches panifiées
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
J'ai bien compris, ta demande est pertinente, c'était juste pour initier cette pratiqueJe m'excuse, c'était une blague
Tu n'as pas à t'excuser, de plus je ne suis pas propriétaire du forum...
Pour ton pb je n'ai pas trop le temps de creuser.
As-tu regardé si c'était possible en VBS ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Charles
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 27
- Remerciements reçus 0
Résultat avec commande Schtasks /query /fo CSV:
Nom de la tache, Prochaine Exécution, Etat
\"At97\",\"18:33:00, 21/03/2012\",\"\"
\"At98\",\"19:33:00, 21/03/2012\",\"\"
\"At99\",\"20:33:00, 21/03/2012\",\"\"
\"Nouvelle Tâche\",\"Jamais\",\"Non démarrée\"
Résultat avec la nouvelle commande get-tachesplanifies:
<br><br>Message édité par: Elreyatem, à: 21/03/12 10:20Titre Date Description Etat
----
----
\"At131.job\" (FSCStarter.exe) 21/03/2012 04:38:00 Démarré... Réussit
\"At131.job\" (FSCStarter.exe) 21/03/2012 04:38:00 Quitté... Réussit
Nouvelle Tâche.job\"(plouf.plouf) 21/03/2012 10:05:03 Impossible de commencer la tâche... Echec
\"At17.job\" (FSCStarter.exe) 21/03/2012 10:13:00 Démarré... Réussit
Connexion ou Créer un compte pour participer à la conversation.
- Gaga
- Hors Ligne
- Membre junior
-
- Messages : 39
- Remerciements reçus 0
Tu peux nous mettre ta fonction stp, ça m’intéresse !!J'ai résolu le problème en créant la fonction qui manquait. ^^\"
Connexion ou Créer un compte pour participer à la conversation.
- Charles
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 27
- Remerciements reçus 0
J'ai été contraint sous 2008 d'utiliser la commande schtasks pour récupérer les événements, le journal de log sous 2008 est très pourrit.
La commande peut être exécutée à distance grâce à Invoke-Command.
[code:1]function get-tachesplanifie()
{
<#
.SYNOPSIS
Récupère le résultats des tâches planifiées.
.DESCRIPTION
La fonction get-tachesplanifie vous permet de récupérer le résultat des tâches planifiées du systèmes de l'ordinateur courant.
.PARAMETER chemin
Le paramètre chemin permet d'indiquer le fichier de sortie. Il néccessite le paramètre -sortie.
.PARAMETER sortie
Le paramètre sortie permet d'indiquer le format de sortie [HTML/CSV].
.EXAMPLE
get-tachesplanifie
Renvois et affiche dans la fenêtre d'éxécution la liste des tâches planifiées (Titre, Description, Etat)
.EXAMPLE
get-tachesplanifie -sortie csv -chemin \"C:\temp\Sortie.csv\"
Obtient la liste des tâches planifiées et l'exporte au format CSV.
.LINK
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
#>
# On définit les paramètres de sorties.
param([string]$sortie,[string]$chemin)
[string]$os = Get-WmiObject Win32_OperatingSystem | select Caption
# Taches compatible uniquement avec Windows 2003 et Windows XP.
if($os.contains(\"XP\"«») -or $os.contains(\"2003\"«»))
{
# Définition des variables environnement.
# On utilise le fichier de log système.
$log = cat $env:«»systemroot\tasks\schedlgu.txt
$d = 0
$trouve = $false
# on parcourt le fichier de log et on ne récupère que les dernières tâches éxécutées.
$log_recent = foreach($ligne in $log)
{
$test = $false
# Si on atteint la limite, on arrête l'éxécution du script.
if($ligne.Contains(\"[ ***** Les opérations les plus récentes sont listées ci-dessus\"«»))
{
break
}
# Cette ligne correspond au lancement du planificateur de tâche (inutile donc).
# On peut donc la supprimer.
elseif($ligne -eq '\"Service du Planificateur de tâches\"' -or $ligne -eq'\"Task Scheduler Service\"' )
{
# On indique qu'on est tombé sur cette ligne. La ligne suivante ne doit pas être lu.
$trouve = $true
}
# Cette condition indique que l'on est pas sur le cas précédent.
# Si le cas précédent a déjà été rencontré, on ne lit pas la ligne.
else
{
if($trouve -eq $false)
{
$ligne
}
else
{
$trouve = $false
}
}
}
# On enregistre dans $tab le contenu du retour de la boucle suivante.
$tab = while($d -lt $log_recent.count)
{
# Le format du fichier varie en fonction du cas de figure.
# Si la ligne contient erreur, on effectue la tâche suivante:
if($log_recent[$d].contains(\"** ERREUR **\"«»))
{
$info = $log_recent[$d] -split \" \"
$titre = $info[0] + \" \" + $info[1] + $info[2]
$date = $info[3] + \" \" + $info[4]
$test = $true
# On indique si le résultat est en échec.
$Resultat = \"Echec\"
}
else
{
# On indique si le résultat est en réussite.
$titre = $log_recent[$d]
$Resultat = \"Réussie\"
}
$d++
$contenu = \"\"
if($log_recent[$d] -ne $null)
{
while(!$log_recent[$d].contains('\"'))
{
if($test -eq $false)
{
$contenu_split = $log_recent[$d] -split \" \"
$contenu = $contenu_split[0] + \"`n\"
$date = $contenu_split[2] + \" \" + $contenu_split[3]
$test = $true
$d++
}
else
{
$contenu += $log_recent[$d] + \"`n\"
$d++
}
if($log_recent[$d] -eq $null)
{
break
}
}
$test = $false
# On crée l'objet correspondant aux résultats.
$tableau = ForEach-Object {New-Object psobject -Property @{\"Titre\" = $titre; \"Date\" = $Date; \"Description\" = $contenu; \"Etat\" = $Resultat}}
$tableau | Select Titre, Date, Description, Etat | Sort-Object Titre
}
}
}
# Fin de la zone Windows 2003 et Windows XP.
# Tache compatible avec Windows 7
if($os.contains(\"8\"«») -or $os.contains(\"7\"«»))
{
$taches = schtasks /query /fo csv | FINDSTR -V '\"Nom de la tâche\",\"Prochaine exécution\",\"Statut\"'
$taches = $taches -replace \"N/A\" , \"Aucune date de lancement\"
# On considère que le fait de ne pas être lancer ou non démarré est un échec.
$taches = $taches -replace \"Inconnue\",\"Echec\"
$taches = $taches -replace \"Non démarrée\",\"Echec\"
$taches = $taches -replace \"Prêt\", \"Réussie\"
$tableau = $taches | ConvertFrom-CSV -Header \"Titre\",\"Date\",\"Etat\",\"Decription\"
$tab = $tableau | Select Titre, Date, Description, Etat
}
if($sortie)
{
if($sortie -eq \"csv\"«»)
{
if(-not$chemin)
{
$tab | ConvertTo-Csv -NoTypeInformation -Delimiter \";\"
}
elseif($chemin)
{
$tab | Export-Csv -NoTypeInformation -Delimiter \";\" -path $chemin -Encoding \"UTF8\"
Write-Host -ForegroundColor \"Green\" Export avec succès.
}
}
elseif($sortie -eq \"html\"«»)
{
if(-not$chemin)
{
$tab | ConvertTo-Html
}
elseif($chemin)
{
$tab | ConvertTo-Html > $chemin
}
}
else
{
Write-Host -ForegroundColor \"Red\" \"Le paramètre -sortie a été mal définit [HTML ou CSV].\"
}
}
else
{
return $tab
}
}[/code:1]<br><br>Message édité par: Elreyatem, à: 22/03/12 11:09
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Problème récupération tâches panifiées