Question Powershell et tâche planifiée

Plus d'informations
il y a 8 ans 1 mois #25292 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 ... :blush:

Powershell: la vie est belle :)

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

Plus d'informations
il y a 8 ans 1 mois #25294 par Arnaud Petitjean
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

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.

Plus d'informations
il y a 8 ans 1 mois #25295 par Toper
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..
:pinch: :pinch:
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: :angry: :angry: :S :blink:<br><br>Message édité par: gregmurf, à: 11/04/18 14:25

Powershell: la vie est belle :)

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

Plus d'informations
il y a 8 ans 1 mois #25298 par Toper
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 \&quot;\\servername\folder\&quot; -Include \&quot;Suivi*.pdf\&quot; -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 { \&quot;Les fichiers suivi sont bien datés d'aujourd'hui\&quot;
} [/code:1]
Et dans le body de mon message, je reprend le \&quot;$countsuivi\&quot;.<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.

Plus d'informations
il y a 8 ans 1 mois #25300 par Arnaud Petitjean
Tu devrais pour commencer (mais tu le fais peut-être) initialiser tes variables.

Comme cela:

[code:1]
$countSuivi = 0
$checkSuivi = @()

$checkSuivi = @(Get-ChildItem -Path \&quot;\\servername\folder\&quot; -Include \&quot;Suivi*.pdf\&quot; -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 {
\&quot;Les fichiers suivi sont bien datés d'aujourd'hui\&quot;
}
[/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.

Plus d'informations
il y a 8 ans 1 mois #25301 par Toper
Réponse de Toper sur le sujet Re:Powershell et tâche planifiée
Ben le body, rien de méchant...
[code:1]$subjectsuivi = \&quot;Fichiers Suivi antérieurs à aujourd'hui\&quot;
$bodysuivi = \&quot;Bonjour,&lt;br&gt;\&quot;
$bodysuivi += \&quot; '$countsuivi' fichiers Suivi*.pdf datant d'hier sont encore présents à l'interieur du dossier.&lt;br&gt;\&quot;
$bodysuivi += \&quot;Cela suppose un problème pendant l'exécution du batch.&lt;br&gt;\&quot;
$bodysuivi += \&quot;&lt;br&gt;\&quot;
$bodysuivi += \&quot;&lt;br&gt;\&quot;
$bodysuivi += \&quot;&lt;br&gt;\&quot;
$bodysuivi += \&quot;Ce mail est envoyé automatiquement, merci de ne pas répondre.&lt;br&gt;\&quot;
$bodysuivi += \&quot;&lt;br&gt;\&quot;[/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.041 secondes
Propulsé par Kunena