設定したパスは無効です。コピーが失敗した場合、誰かに電子メールを送信します。エラーがなければ、コピーが成功したことを示す電子メールを送信します。 現在、それは私にエラーを与えません、それは電子メールを送信しません。私は電子メールの部分が正しいことを知って、それが動作することを確認した。エラー処理の新機能
私のスクリプトブロック。
$Status = 'Succeeded'
try{
Copy-Item -path "\\main-4\info\SmartPlant\app\CitrixRelease\domain\app\*" -Destination "\\domain.com\citrix\Installation Media\app\" -force -ErrorAction Stop
}catch{
$Status = 'Failed'
}finally{
$from = "[email protected]"
$to = "[email protected]"
$subject = "Copy $Status"
$body = "The Copy $Status"
If ($Status = 'Failed') {$body += ", please make sure the server is rebooted" }
$Attachment = "$file"
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient("mail.domain.com")
$msg.From = $From
$msg.To.Add($To)
if($Attachment.Length -gt 1){
$msg.Attachments.Add($Attachment)
}
$msg.Subject = $Subject
$msg.IsBodyHtml = $true
$msg.Body = $Body
$smtp.Send($msg)
}
あなたは本当にFinally
ブロックを使用する必要があるが、それはありません。これについてコードを送信する電子メールを複製することなく、失敗と成功の両方のために電子メールを送信するためのソリューションとしてどのように
try
{
Copy-Item -path "\\main-
4\info\SmartPlant\app\CitrixRelease\domain\app\*" -Destination "\\domain.com\citrix\Installation Media\app\" -force -ErrorAction Stop
}
catch
{
$from = "[email protected]"
$to = "[email protected]"
$subject = "Copy Failed"
$body = "The Copy failed to complete, please make sure the servers rebooted"
$msg = "$file"
$Attachment = "$file"
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient("mail.domain.com")
$msg.From = $From
$msg.To.Add($To)
if($Attachment.Length -gt 1)
{
$msg.Attachments.Add($Attachment)
}
$msg.Subject = $Subject
$msg.IsBodyHtml = $true
$msg.Body = $Body
$smtp.Send($msg)
}
今は、例外が発生した場合にのみメールを送信します。現在のコピーコマンドで例外が発生しますか? – Seth
私はあなたに役立つかもしれないtry..catchのブログ記事を書いた:http://wragg.io/powershell-try-catch/ –
私はあなたが持っているものを持っていると思う。何が間違っているのか分かりません。 – user770022