2009-06-08 2 views
0

나는 지정된 폴더의 모든 파일에 대해 이메일을 보내고 파일을 반복적으로 이동시키는 스크립트를 만들려고합니다.이메일 및 파일 재귀 적으로 이동

그래서 각 파일에 대해이됩니다 : 나는 다음과 같은 메시지가 아래의 스크립트를 실행할 때 이메일을 File1 이동을 File1 이메일 파일 2

지금있는 File2 등 이동 : 을 프로세스가 파일을 액세스 할 수 없습니다 다른 프로세스에서 사용 중이기 때문입니다.

$files = Get-ChildItem 'c:\Test\Out\' 

ForEach ($file in $files) 
    {$smtpServer = “mail.dlabs.local” 

    $msg = New-Object Net.Mail.MailMessage 
    $att = New-Object Net.Mail.Attachment($file.FullName) 
    $smtp = New-Object Net.Mail.SmtpClient($smtpServer) 

    $msg.From = “[email protected]” 
    $msg.To.Add(”[email protected]”) 
    $msg.Subject = ("Test Message "+ $file.Name) 
    $msg.Body = “” 
    $msg.Attachments.Add($att) 

    $smtp.Send($msg) 

    Move-Item $moveFile.FullName 'c:\Test\Sent'} 

누구나이 도움을받을 수 있다면 가장 감사하겠습니다.

답변

3

이동하려는 파일에 대한 파일 핸들이 이미 열려 있기 때문입니다.

Net.Mail.Attachment이는 IDisposable 그래서 파일이 당신이 MSG 개체의()

1

전화 .Dispose() $에게 att.Dispose를 호출해야 잠금 해제, 구현합니다.

그래도 작동하지 않으면 첨부 객체에서 .Disposse를 먼저 호출 한 다음 msg 객체에 .Dispose()을 호출 할 수 있습니다.

(나는 msg 객체에만 .Dispose()을 호출해야한다고 생각하지만, 그 코드를 테스트 한 이후로 기억이 안납니다.).

관련 문제