Question Mail: Le processus ne peut pas accéder au ...

Plus d'informations
il y a 16 ans 2 mois #1491 par Jeel
Boujour,
Lié à l'envoi d'un mail:
Point 1: Je rempli dynamiquement un fichier qui est transmis par mail juste après l'ajout de chaque ligne. Seulement, après le 1er envoi, le process ne libère pas le fichier et à la prochaine écriture par le même script, je reçois l'erreur que le fichier est utilisé par un autre process ... Que faire?
Point 2: J'ai essayé de faire un Get-content de ce fichier dans le body du mail, mais j'ai un problème de format: l'original est composé de lignes bien distinctes, le body généré est composé de ligne collé sans retour à la ligne. Que faire pour avoir le bon format?

Merci à tous
Jeel

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

Plus d'informations
il y a 16 ans 2 mois #1493 par sonic
J'ai exactement le meme problème.Je vais donc attendre avec espoir de lire la solution . Je ne vois plus trop quoi faire d'autre !!!

A+

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

Plus d'informations
il y a 16 ans 2 mois #1494 par Lemaire Patrice
jeelou2000 écrit:

... Que faire?

Je dirais commencer par donner plus d'informations.
Voir meme quelques lignes de code seraient les bienvenues.
Histoire de savoir de quoi on parle ...

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

Plus d'informations
il y a 16 ans 2 mois #1497 par Jeel
C'est simple, je surveille un service critique qui ne doit pas s'arrêté, sinon je le redémarre automatiquement.
A chaque re démarrage, j'envoie une ligne dans un fichier que j'envoie par mail.
[code:1]while ($Boucle_1=1)
{
Get-Service $v_service | where {$_.WaitForStatus(\"Stopped\"«»)}
$date_stop = date
$s=get-service $v_service
start-service $v_service
$date_start = date
Write \"$v_compteur : Service stopped on $v_host at $date_stop and be restart at $date_start\" | out-file -filepath $v_logfile
$s=get-service $v_service
#Send MAIL
$Message = New-Object System.Net.Mail.MailMessage
$Subject = \"Tracking of stopped services\"+\":\"+\" $v_service\" + [System.DateTime]::Now
$Body = Get-content $v_logfile
$Attachment = New-Object System.Net.Mail.Attachment($v_logfile)
$Message.To.Add($To)
$Message.Set_From($From)
$Message.Set_Subject($Subject)
$Message.Set_Body($Body)
$Message.Attachments.Add($Attachment)
$SmtpClient = New-Object System.Net.Mail.SmtpClient
$SmtpClient.Host = $SmtpServer
$SmtpClient.Send($Message)
}[/code:1]
Voilà: l'aspect du body pas terrible et l'attachement n'est plus accessible pour écriture après l'envoi du 1er mail.
Merci et BAT
Jeel

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

Plus d'informations
il y a 16 ans 2 mois #1500 par Arnaud Petitjean
Bonsoir Jeelou,

J'ai tout d'abord quelques petites remarques afin d'améliorer ton script :
- Il serait plus propre de changer ton code
[code:1]
Get-Service $v_service | where {$_.WaitForStatus(\"Stopped\"«»)}[/code:1]

en

[code:1]
$svc = Get-Service $v_service
$svc.WaitForStatus(\"Stopped\"«»)

ou encore

$(get-service $srv1).WaitForStatus(\"Stopped\"«»)
[/code:1]

- Si j'étais toi, je ferais un test après la commande de redémarrage du service, car tu supposes qu'il redémarre correctement.

- Ta chaine peut s'écrire aussi ainsi :
[code:1]
$subject = \"Tracking of stopped services: $v_service $([System.DateTime]::Now)\"[/code:1]

- A quoi dans le bon mettre comme corps de message la même chose que dans la pièce jointe ?

- Tu devrais éviter d'utiliser l'alias Write au lieu de Write-Output, et ce pour éviter toute confusion avec Write-Host (qui ne fonctionne pas dans ce contexte)


Sinon pour ton problème de fichier qui reste ouvert et qui ne peut pas être écrasé, je t'avoue que je ne comprends pas :S
A tout hasard essaye d'utiliser Set-Content au lieu de Out-File.

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 16 ans 2 mois #1502 par Arnaud Petitjean
A propos du défaut de mise en page du corps de message, cela me fait penser à un problème d'encodage...

J'ai trouvé cette fiche MSDN qui peut être intéressante.

Essaye de t'en inspirer pour forcer le corps de ton mail en unicode UTF8. Dès que j'aurais un peu de temps je regarderais aussi de mon côté.

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.

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