Je suis bloqué à la fin d'un script sur lequel un fichier est envoyé avant d'être supprimé. Sauf que ... le fichier semble toujours être ouvert, probablement par le client SMTP, donc j'obtiens une erreur quand j'essaye de le supprimer. Bien sûr, redémarrer un shell me permettra de le supprimer, ce n'est pas le point. ;-) Point est que je voudrais le créer, l'envoyer par courriel, le supprimer, dans un script.PowerShell Fermer le fichier/Supprimer le fichier après l'envoi par courrier électronique via .NET
L'erreur:
Cannot remove item C:\Temp\myfile.csv: The process cannot access the file
'C:\Temp\myfile.csv' because it is being used by another process.
code:
$emailFrom = '[email protected]'
$emailTo = '[email protected]'
$smtpServer = 'localhost'
$FileName='myfile.csv'
$FilePathName='c:temp\' + $FileName
$subject = 'Emailing: ' + $FileName
$body = 'This message as been sent with the following file or link attachments: ' + $FileName
$msg = new-object Net.Mail.MailMessage
$att = new-object Net.Mail.Attachment($FilePathName)
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$msg.From = $emailFrom
$msg.To.Add($emailTo)
$msg.Subject = $subject
$msg.Body = $body
$msg.Attachments.Add($att)
$smtp.Send($msg)
#Garbage Collection (used for releasing file for deleting)
# Start-Sleep -s 1
# [GC]::Collect()
#Clean-up/Remove File
# Start-Sleep -s 1
if (Test-Path $FilePathName) {Remove-Item $FilePathName}
Les lignes commentées sont mes tentatives d'injection des pauses et le nettoyage des ordures, ce qui a produit le même résultat.
IMPRESSIONNANT! Je vous remercie! –