Проблема заключается в том, как вы строите строку тела.
У вас уже есть содержимое causeOfFailure.txt
в переменной $fileContent
, поэтому нет необходимости выполнять Get- Содержимое в том же файле снова.
Я бы посоветовал вам сначала создать свое тело в отдельной переменной, чтобы сделать код более читабельным. Для этого есть несколько вариантов, например
Использовать Here-String
$body = @"
The following Domain Controller has had a replication failure. Please see attached txt files for more information.
$fileContent
"@
Или вставить NewLine, а затем $fileContent
, используя -f
Оператор форматирования
$body = 'The following Domain Controller has had a replication failure. Please see attached txt files for more information.{0}{1}' -f
[Environment]::NewLine, $fileContent
Или просто создайте в виде одной строки в двойных кавычках
$body = "The following Domain Controller has had a replication failure. Please see attached txt files for more information.`r`n$fileContent"
Какой бы метод поиска вы ни считали / поддерживал в вашем коде.
Затем для части, в которой вы используете командлет Send-MailMessage
.
Здесь снова выписывание всех параметров в виде одной длинной строки может сделать код менее читабельным, и при этом ошибки легко сделали. Есть лучший способ использовать командлет с большим количеством параметров, известный как Splatting .
Применительно к вашему коду это выглядит следующим образом:
# create a hashtable object with all parameters you want to use for Send-MailMessage
$mailParams = @{
SMTPServer = 'localhost'
To = 'myemail@email.com'
From = 'myemail@email.com'
Subject = "TESTING Active Domain Replication Failure TESTING"
Body = $body
Attachments = 'error.zip'
}
Send-MailMessage @mailParams
Надеюсь, это поможет