Question Récupérer les mails via une routine

Plus d'informations
il y a 10 ans 10 mois #19733 par artichaulo
Bonjour,

Je précise avant tout que j'ai farfouillé les internets avant de venir solliciter votre aide :P

Etant administrateur système je reçois quotidiennement par mail des notification de Backup dans ma boite mail concernant mes différents serveurs.
Je dois chaque matin m'assurer que chaque serveur m'a bien envoyé son statut, si je ne reçois rien, quelque chose ne va pas.

Par souci de fainéantise j'ai créé un script Powershell qui vient récupérer mes mails et me génère une synthèse sommaire des mails de backup reçu dans les X dernières heures. Cette synthèse est ensuite envoyée par mail vers moi et un collègue.


Mon problème est le suivant :
- le script fonctionne très bien quand je l’exécute dans mon environnement courant (depuis la console powershell)

- Mais le script ne fonctionne pas quand je lance en tant que tâche planifiée sur mon propre poste avec mon propre compte. Le script n'est pas en erreur mais ne récupère aucun mail.

Y a t-il une astuce pour permettre d'executer une tâche planifiée en tant que ... \"utilisateur courant\"?

J'espère avoir été assez clair

Merci :)

PS : Le code ci-dessous :
[code:1]

$serveurs = @(\"SERVEUR1\",\"SERVEUR2\",\"SERVEUR3\",\"SERVEUR4\"«»)
$StartDate = Get-Date
$StartDate > C:\IT\CSV.csv

#Récupération des mails
$olFolderInbox = 6
$outlook = new-object -com outlook.application;
$ns = $outlook.GetNameSpace(\"MAPI\"«»);
$inbox = $ns.GetDefaultFolder($olFolderInbox)
$targetfolder = $inbox.Folders | where-object { $_.name -eq \"_Backup\" } #Les mails de backups sont stockés dans un sous répertoire de la boite de réception, \"_Backup\"
$targetfolder.items | select -last 50 | foreach { #récupère les 50 derniers mails
$EndDate = $_.ReceivedTime
$mytspan = NEW-TIMESPAN –Start $StartDate –End $EndDate
If ([int]$mytspan.TotalHours -ge -18) { # récupère uniquement les mails ayant été émis au plus tard il y a 18h
foreach ($serveur in $serveurs)
{
$chaine = $_.body | select-string -pattern $serveur
If ($chaine) {
$serveur + \";\" + $chaine + \";\" + $_.body >> c:\it\CSV.csv
}
}
}
}

\"\" >> C:\IT\log.log
\"\" >> C:\IT\log.log
\"
WARNING
\" >> C:\IT\log.log
foreach ($serveur in $serveurs)
{
$statut = get-content C:\IT\log.log | where {$_ -match $serveur}
If (!$statut) {
\"\" >> C:\IT\log.log
\"
\" >> C:\IT\log.log
\"Aucune notification de backup pour le serveur \" + $serveur + \" depuis hier soir, 20h\" >> C:\IT\log.log
}
}

[/code:1]

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

Plus d'informations
il y a 10 ans 10 mois #19735 par Laurent Dardenne
artichaulo écrit:

Y a t-il une astuce pour permettre d'executer une tâche planifiée en tant que ... \"utilisateur courant\"?

Probable , mais ce n'est pas supportée par MS.
Peut être utiliser un autre type de tâche ?

Tutoriels PowerShell

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

Plus d'informations
il y a 10 ans 10 mois #19746 par artichaulo
Merci de ce retour Laurent.
Je fais fouiller du côté des solutions alternatives d’exécution de scripts.

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

Plus d'informations
il y a 10 ans 10 mois #19747 par Laurent Dardenne
Essaie d'exécuter ton script dans un ScheduledJob et pas dans un ScheduledTask.

Tutoriels PowerShell

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

Plus d'informations
il y a 10 ans 10 mois #19748 par artichaulo
OK Laurent, je vais essayer ça.
Mais en attendant tu m'as mis sur la bonne piste!
Pour ceux que ça intéresse j'ai trouvé ça :

cronsm.sourceforge.net/#Download

=> un cron pour Windows qui permet d’exécuter des routines .bat ou .exe (en environnement courant) à des intervalles pré-définis

il me suffit d'appeler un .bat de ce style :

[code:1]
powershell -file C:\PWS1.ps1
[/code:1]

et ô miracle je récupère mes mails dans le script :woohoo:

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

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