Question
Powershell et tâche planifiée
- Toper
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 145
- Remerciements reçus 0
il y a 8 ans 1 mois #25292
par Toper
Powershell: la vie est belle
Powershell et tâche planifiée a été créé par Toper
Bonjour à tous,
je suis confronté à un petit soucis. Lorsque je lance mon script à partir d'ISE, tout se passe comme demandé. Mais si je lance le script à travers une tâche planifiée, il s'exécute, mais le .count dans le code qui est repris dans un mail qu'il m'envoi ne fonctionne pas.
Je m'explique: je fais un gci sur des fichiers pour en connaitre la date de dernière écriture. S'il y en a datant d'hier et plus, je les compte, puis PSH m'envoi un mail avec le compte de ces fichiers SI il en trouve. Or en passant pas la tâche planifiée, il m'en trouve bien, mais me met le count = 0....
J'espère avoir été pas trop confus dans mon explication ...
je suis confronté à un petit soucis. Lorsque je lance mon script à partir d'ISE, tout se passe comme demandé. Mais si je lance le script à travers une tâche planifiée, il s'exécute, mais le .count dans le code qui est repris dans un mail qu'il m'envoi ne fonctionne pas.
Je m'explique: je fais un gci sur des fichiers pour en connaitre la date de dernière écriture. S'il y en a datant d'hier et plus, je les compte, puis PSH m'envoi un mail avec le compte de ces fichiers SI il en trouve. Or en passant pas la tâche planifiée, il m'en trouve bien, mais me met le count = 0....
J'espère avoir été pas trop confus dans mon explication ...
Powershell: la vie est belle
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 8 ans 1 mois #25294
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Powershell et tâche planifiée
Salut Gregmurf!
La première chose que je ferai c'est d'exécuter ton script dans la console PowerShell classique et vérifier que ça fonctionne. En effet, c'est pour moi ce que j'appelle la console \"juge de paix\" car si ton script marche dans cette console alors il marchera partout. En effet, lorsque tu appelleras ton script dans une tâche planifiée c'est donc la console classique qui sera appelée et non ISE.
Ensuite, lorsqu'on exécute un script dans une tâche planifiée on est souvent confrontés à des problèmes de droits car la tâche va s'exécuter dans un autre contexte utilisateur que celui que tu as l'habitude d'utiliser.
Ce que je fais souvent c'est ouvrir une console PowerShell en mode RunAs avec le compte de service qui servira a exécuter la tâche et je teste le script. Et ça permet d'éviter bien des galères...
Arnaud
La première chose que je ferai c'est d'exécuter ton script dans la console PowerShell classique et vérifier que ça fonctionne. En effet, c'est pour moi ce que j'appelle la console \"juge de paix\" car si ton script marche dans cette console alors il marchera partout. En effet, lorsque tu appelleras ton script dans une tâche planifiée c'est donc la console classique qui sera appelée et non ISE.
Ensuite, lorsqu'on exécute un script dans une tâche planifiée on est souvent confrontés à des problèmes de droits car la tâche va s'exécuter dans un autre contexte utilisateur que celui que tu as l'habitude d'utiliser.
Ce que je fais souvent c'est ouvrir une console PowerShell en mode RunAs avec le compte de service qui servira a exécuter la tâche et je teste le script. Et ça permet d'éviter bien des galères...
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Toper
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 145
- Remerciements reçus 0
il y a 8 ans 1 mois #25295
par Toper
Powershell: la vie est belle
Réponse de Toper sur le sujet Re:Powershell et tâche planifiée
Bonjour,
effectivement j'ai pu constater la différence entre le lancer via ISE et via une tâche planifiée.
Mais là je viens de faire le test du juge de paix: J'ai des \"write-host\" s'il trouve aucun fichier + un .count si il en trouve. Et le juge de paix me dit que sur 5 gci, 4 n'ont rien à déclarer, et le cinquième en trouve 4 (fichiers).
Donc je vois bien le count=4 dans la fenetre powershell normale (pas ISE), mais l'envoi de mail me dit \"0\".
Le même script lancé via ISE m'envoi bien 4 dans le mail..

Je lance la tâche planifiée en tant que moi même, c'est aussi sur \"moi même\" que la session sur laquelle je suis connectée et travaille avec PSH est.
Message édité par: gregmurf, à: 11/04/18 14:19
Message édité par: gregmurf, à: 11/04/18 14:22
Euh... je me rend compte que c'est aléatoire.... là, lancé d'ISE, il me met 4, mais me mail 0...
Grrrrrrr:evil:
<br><br>Message édité par: gregmurf, à: 11/04/18 14:25
effectivement j'ai pu constater la différence entre le lancer via ISE et via une tâche planifiée.
Mais là je viens de faire le test du juge de paix: J'ai des \"write-host\" s'il trouve aucun fichier + un .count si il en trouve. Et le juge de paix me dit que sur 5 gci, 4 n'ont rien à déclarer, et le cinquième en trouve 4 (fichiers).
Donc je vois bien le count=4 dans la fenetre powershell normale (pas ISE), mais l'envoi de mail me dit \"0\".
Le même script lancé via ISE m'envoi bien 4 dans le mail..
Je lance la tâche planifiée en tant que moi même, c'est aussi sur \"moi même\" que la session sur laquelle je suis connectée et travaille avec PSH est.
Message édité par: gregmurf, à: 11/04/18 14:19
Message édité par: gregmurf, à: 11/04/18 14:22
Euh... je me rend compte que c'est aléatoire.... là, lancé d'ISE, il me met 4, mais me mail 0...
Grrrrrrr:evil:
Powershell: la vie est belle
Connexion ou Créer un compte pour participer à la conversation.
- Toper
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 145
- Remerciements reçus 0
il y a 8 ans 1 mois #25298
par Toper
Powershell: la vie est belle
Réponse de Toper sur le sujet Re:Powershell et tâche planifiée
Bon je met le code, ça peut peut-être venir de là... mais j'en doute (bien que le code peut être optimisé mais bon... newbee here !)
[code:1]$checksuivi = (Get-ChildItem -Path \"\\servername\folder\" -Include \"Suivi*.pdf\" -Recurse | Where-Object { ( (Get-Date) - $_.LastWriteTime).totaldays -gt 1})
if ($checksuivi -ne $null)
{ $countsuivi = $checksuivi.count
Try {
send-MailMessage -SmtpServer $server -To $To -From $fromemail -Subject $subjectsuivi -Body $bodysuivi -BodyAsHtml -Priority high -Encoding utf8 -ea Stop
}
Catch {
$_ | Out-File C:\Progb\Logs\PDF Clients\errorssuivi.txt -Append
}
} else { \"Les fichiers suivi sont bien datés d'aujourd'hui\"
} [/code:1]
Et dans le body de mon message, je reprend le \"$countsuivi\".<br><br>Message édité par: gregmurf, à: 11/04/18 15:50
[code:1]$checksuivi = (Get-ChildItem -Path \"\\servername\folder\" -Include \"Suivi*.pdf\" -Recurse | Where-Object { ( (Get-Date) - $_.LastWriteTime).totaldays -gt 1})
if ($checksuivi -ne $null)
{ $countsuivi = $checksuivi.count
Try {
send-MailMessage -SmtpServer $server -To $To -From $fromemail -Subject $subjectsuivi -Body $bodysuivi -BodyAsHtml -Priority high -Encoding utf8 -ea Stop
}
Catch {
$_ | Out-File C:\Progb\Logs\PDF Clients\errorssuivi.txt -Append
}
} else { \"Les fichiers suivi sont bien datés d'aujourd'hui\"
} [/code:1]
Et dans le body de mon message, je reprend le \"$countsuivi\".<br><br>Message édité par: gregmurf, à: 11/04/18 15:50
Powershell: la vie est belle
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 8 ans 1 mois #25300
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Powershell et tâche planifiée
Tu devrais pour commencer (mais tu le fais peut-être) initialiser tes variables.
Comme cela:
[code:1]
$countSuivi = 0
$checkSuivi = @()
$checkSuivi = @(Get-ChildItem -Path \"\\servername\folder\" -Include \"Suivi*.pdf\" -Recurse | Where-Object { ( (Get-Date) - $_.LastWriteTime).totaldays -gt 1})
# ici j'inverse le test (c'est une bonne pratique)
if ( $null -ne $checksuivi ){
$countsuivi = $checkSuivi.count
Try {
send-MailMessage -SmtpServer $server -To $To -From $fromemail -Subject $subjectsuivi -Body $bodysuivi -BodyAsHtml -Priority high -Encoding utf8 -ea Stop
}
Catch {
$_ | Out-File C:\Progb\Logs\PDF Clients\errorssuivi.txt -Append
}
}
else {
\"Les fichiers suivi sont bien datés d'aujourd'hui\"
}
[/code:1]
Sinon à part cela et le fait que je ne vois pas le contenu de $bodySuivi, tout m'a l'air correct.
Comme cela:
[code:1]
$countSuivi = 0
$checkSuivi = @()
$checkSuivi = @(Get-ChildItem -Path \"\\servername\folder\" -Include \"Suivi*.pdf\" -Recurse | Where-Object { ( (Get-Date) - $_.LastWriteTime).totaldays -gt 1})
# ici j'inverse le test (c'est une bonne pratique)
if ( $null -ne $checksuivi ){
$countsuivi = $checkSuivi.count
Try {
send-MailMessage -SmtpServer $server -To $To -From $fromemail -Subject $subjectsuivi -Body $bodysuivi -BodyAsHtml -Priority high -Encoding utf8 -ea Stop
}
Catch {
$_ | Out-File C:\Progb\Logs\PDF Clients\errorssuivi.txt -Append
}
}
else {
\"Les fichiers suivi sont bien datés d'aujourd'hui\"
}
[/code:1]
Sinon à part cela et le fait que je ne vois pas le contenu de $bodySuivi, tout m'a l'air correct.
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Toper
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 145
- Remerciements reçus 0
il y a 8 ans 1 mois #25301
par Toper
Powershell: la vie est belle
Réponse de Toper sur le sujet Re:Powershell et tâche planifiée
Ben le body, rien de méchant...
[code:1]$subjectsuivi = \"Fichiers Suivi antérieurs à aujourd'hui\"
$bodysuivi = \"Bonjour,<br>\"
$bodysuivi += \" '$countsuivi' fichiers Suivi*.pdf datant d'hier sont encore présents à l'interieur du dossier.<br>\"
$bodysuivi += \"Cela suppose un problème pendant l'exécution du batch.<br>\"
$bodysuivi += \"<br>\"
$bodysuivi += \"<br>\"
$bodysuivi += \"<br>\"
$bodysuivi += \"Ce mail est envoyé automatiquement, merci de ne pas répondre.<br>\"
$bodysuivi += \"<br>\"[/code:1]
[code:1]$subjectsuivi = \"Fichiers Suivi antérieurs à aujourd'hui\"
$bodysuivi = \"Bonjour,<br>\"
$bodysuivi += \" '$countsuivi' fichiers Suivi*.pdf datant d'hier sont encore présents à l'interieur du dossier.<br>\"
$bodysuivi += \"Cela suppose un problème pendant l'exécution du batch.<br>\"
$bodysuivi += \"<br>\"
$bodysuivi += \"<br>\"
$bodysuivi += \"<br>\"
$bodysuivi += \"Ce mail est envoyé automatiquement, merci de ne pas répondre.<br>\"
$bodysuivi += \"<br>\"[/code:1]
Powershell: la vie est belle
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.045 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Powershell et tâche planifiée