- Added computer name to default email subject
- Removed some useless output
- Check if network drive was disconnected successfully
- Send error messages are now sent via email
# To address of email notification\r
[String]$emailToAddress = "patrick@test.local"\r
# Subject of email notification\r
# To address of email notification\r
[String]$emailToAddress = "patrick@test.local"\r
# Subject of email notification\r
-[String]$emailSubject = "DSMonRot"\r
+[String]$emailSubject = "DSMonRot on $env:computername"\r
# Mail server\r
[String]$emailMailserver = "localhost"\r
# SMTP Port\r
# Mail server\r
[String]$emailMailserver = "localhost"\r
# SMTP Port\r
Write-Host "Sending email: $emailToAddress, $body"\r
\r
try {\r
Write-Host "Sending email: $emailToAddress, $body"\r
\r
try {\r
- $smtp = New-Object System.Net.Mail.SmtpClient($emailMailServer, $emailPort);\r
+ $smtp = New-Object System.Net.Mail.SmtpClient($emailMailServer, $emailPort)\r
\r
$smtp.EnableSSL = $emailSSL\r
\r
if($emailAuth) {\r
\r
$smtp.EnableSSL = $emailSSL\r
\r
if($emailAuth) {\r
- $smtp.Credentials = New-Object System.Net.NetworkCredential($emailUser, $emailPassword);\r
+ $smtp.Credentials = New-Object System.Net.NetworkCredential($emailUser, $emailPassword)\r
- $smtp.Send($emailFromAddress, $emailToAddress, $emailSubject, $body);\r
+ $smtp.Send($emailFromAddress, $emailToAddress, $emailSubject, $body)\r
}\r
catch {\r
Write-Host "Could not send email: $_.Exception.Message"\r
}\r
}\r
\r
}\r
catch {\r
Write-Host "Could not send email: $_.Exception.Message"\r
}\r
}\r
\r
+Write-Host "Started at" (Get-Date -format "yyyy-MM-dd HH:mm:ss")\r
+\r
$errorMessages = @()\r
\r
$smbConnected = $False\r
$errorMessages = @()\r
\r
$smbConnected = $False\r
$smbConnected = $True\r
}\r
Catch {\r
$smbConnected = $True\r
}\r
Catch {\r
- Write-Host "Could not connect to network drive: $_.Exception.Message"\r
+ Write-Host "Could not connect to network drive $smbDrive`: $_.Exception.Message"\r
& $dsPath $dsArgs\r
\r
if($LastExitCode -ne 0) {\r
& $dsPath $dsArgs\r
\r
if($LastExitCode -ne 0) {\r
- Write-Host "Error code: $LastExitCode"\r
+ Write-Host "Drive Snapshot failed to backup! Exit code: $LastExitCode"\r
+ $errorMessages += "Drive Snapshot failed to backup! Exit code: $LastExitCode"\r
+ }\r
+ else {\r
+ $success = $True\r
}\r
}\r
else {\r
Write-Host "Directory $backupTargetDiff already exists!"\r
}\r
}\r
else {\r
Write-Host "Directory $backupTargetDiff already exists!"\r
$errorMessages += "Directory $backupTargetDiff already exists!"\r
}\r
}\r
$errorMessages += "Directory $backupTargetDiff already exists!"\r
}\r
}\r
& $dsPath $dsArgs\r
\r
if($LastExitCode -ne 0) {\r
& $dsPath $dsArgs\r
\r
if($LastExitCode -ne 0) {\r
- Write-Host "Error code: $LastExitCode"\r
+ Write-Host "Drive Snapshot failed to backup! Exit code: $LastExitCode"\r
+ $errorMessages += "Drive Snapshot failed to backup! Exit code: $LastExitCode"\r
+ }\r
+ else {\r
+ $success = $True\r
- \r
- $success = $False\r
-if($isDiff -eq $False -and $success -eq $True -and $keepMonths -ge 0) {\r
+if(!$isDiff -and $success -eq $True -and $keepMonths -ge 0) {\r
Write-Host "Rotating"\r
\r
$keepMonthsCount = $keepMonths\r
Write-Host "Rotating"\r
\r
$keepMonthsCount = $keepMonths\r
$keepMonthsCount--\r
}\r
\r
$keepMonthsCount--\r
}\r
\r
- Write-Host $keepMonthsCount\r
- \r
if($keepMonthsCount -eq -1) {\r
Write-Host "Deleting $_"\r
Remove-Item -Recurse -Force $_.FullName\r
if($keepMonthsCount -eq -1) {\r
Write-Host "Deleting $_"\r
Remove-Item -Recurse -Force $_.FullName\r
\r
if($smbConnected) {\r
Write-Host "Disconnecting network drive"\r
\r
if($smbConnected) {\r
Write-Host "Disconnecting network drive"\r
- Remove-PSDrive $smbDrive\r
+ \r
+ try {\r
+ Remove-PSDrive $smbDrive -ErrorAction Stop\r
+ }\r
+ catch {\r
+ Write-Host "Could not disconnect network drive $smbDrive`: $_.Exception.Message"\r
+ $errorMessages += "Could not disconnect network drive $smbDrive`: $_.Exception.Message"\r
+ }\r
}\r
\r
if($emailOnError -and $errorMessages.Count -gt 0) {\r
Send-Email ("Error:`n"+($errorMessages -join "`n"))\r
}\r
\r
if($emailOnError -and $errorMessages.Count -gt 0) {\r
Send-Email ("Error:`n"+($errorMessages -join "`n"))\r
-}
\ No newline at end of file
+}\r
+\r
+Write-Host "Ended at" (Get-Date -format "yyyy-MM-dd HH:mm:ss")
\ No newline at end of file