Question [Résolu] Problème récupération tâches panifiées

Plus d'informations
il y a 14 ans 6 jours #11318 par Laurent Dardenne
Elreyatem écrit:

Je m'excuse, c'était une blague

J'ai bien compris, ta demande est pertinente, c'était juste pour initier cette pratique :)
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.

Plus d'informations
il y a 13 ans 11 mois #11353 par Charles
J'ai résolu le problème en créant la fonction qui manquait. ^^\"

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:

Titre 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

<br><br>Message édité par: Elreyatem, à: 21/03/12 10:20

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 11 mois #11358 par Gaga
Elreyatem a écrit :

J'ai résolu le problème en créant la fonction qui manquait. ^^\&quot;

Tu peux nous mettre ta fonction stp, ça m’intéresse !!

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 11 mois #11362 par Charles
Pour le moment elle fonctionne mieux sous 2003 que 2008 (manque la description). Si quelqu'un peut apporter des améliorations je suis preneur! :laugh:

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()
{
&lt;#

.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 \&quot;C:\temp\Sortie.csv\&quot;

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.

#&gt;

# 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(\&quot;XP\&quot;«») -or $os.contains(\&quot;2003\&quot;«»))
{
# 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(\&quot;[ ***** Les opérations les plus récentes sont listées ci-dessus\&quot;«»))
{
break
}
# Cette ligne correspond au lancement du planificateur de tâche (inutile donc).
# On peut donc la supprimer.
elseif($ligne -eq '\&quot;Service du Planificateur de tâches\&quot;' -or $ligne -eq'\&quot;Task Scheduler Service\&quot;' )
{
# 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(\&quot;** ERREUR **\&quot;«»))
{
$info = $log_recent[$d] -split \&quot; \&quot;
$titre = $info[0] + \&quot; \&quot; + $info[1] + $info[2]
$date = $info[3] + \&quot; \&quot; + $info[4]
$test = $true
# On indique si le résultat est en échec.
$Resultat = \&quot;Echec\&quot;
}
else
{
# On indique si le résultat est en réussite.
$titre = $log_recent[$d]
$Resultat = \&quot;Réussie\&quot;
}
$d++
$contenu = \&quot;\&quot;
if($log_recent[$d] -ne $null)
{
while(!$log_recent[$d].contains('\&quot;'))
{
if($test -eq $false)
{
$contenu_split = $log_recent[$d] -split \&quot; \&quot;
$contenu = $contenu_split[0] + \&quot;`n\&quot;
$date = $contenu_split[2] + \&quot; \&quot; + $contenu_split[3]
$test = $true
$d++
}
else
{
$contenu += $log_recent[$d] + \&quot;`n\&quot;
$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 @{\&quot;Titre\&quot; = $titre; \&quot;Date\&quot; = $Date; \&quot;Description\&quot; = $contenu; \&quot;Etat\&quot; = $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(\&quot;8\&quot;«») -or $os.contains(\&quot;7\&quot;«»))
{
$taches = schtasks /query /fo csv | FINDSTR -V '\&quot;Nom de la tâche\&quot;,\&quot;Prochaine exécution\&quot;,\&quot;Statut\&quot;'
$taches = $taches -replace \&quot;N/A\&quot; , \&quot;Aucune date de lancement\&quot;
# On considère que le fait de ne pas être lancer ou non démarré est un échec.
$taches = $taches -replace \&quot;Inconnue\&quot;,\&quot;Echec\&quot;
$taches = $taches -replace \&quot;Non démarrée\&quot;,\&quot;Echec\&quot;
$taches = $taches -replace \&quot;Prêt\&quot;, \&quot;Réussie\&quot;
$tableau = $taches | ConvertFrom-CSV -Header \&quot;Titre\&quot;,\&quot;Date\&quot;,\&quot;Etat\&quot;,\&quot;Decription\&quot;
$tab = $tableau | Select Titre, Date, Description, Etat
}

if($sortie)
{
if($sortie -eq \&quot;csv\&quot;«»)
{
if(-not$chemin)
{
$tab | ConvertTo-Csv -NoTypeInformation -Delimiter \&quot;;\&quot;
}
elseif($chemin)
{
$tab | Export-Csv -NoTypeInformation -Delimiter \&quot;;\&quot; -path $chemin -Encoding \&quot;UTF8\&quot;
Write-Host -ForegroundColor \&quot;Green\&quot; Export avec succès.
}
}
elseif($sortie -eq \&quot;html\&quot;«»)
{
if(-not$chemin)
{
$tab | ConvertTo-Html
}
elseif($chemin)
{
$tab | ConvertTo-Html &gt; $chemin
}
}
else
{
Write-Host -ForegroundColor \&quot;Red\&quot; \&quot;Le paramètre -sortie a été mal définit [HTML ou CSV].\&quot;
}
}
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.

Temps de génération de la page : 0.061 secondes
Propulsé par Kunena