Отправить E-mail, если содержание файла превышает 2 строки - PullRequest
0 голосов
/ 01 ноября 2019

Этот скрипт будет отправлять письмо самому себе, если более 2 строк (3 строки и далее). Я попробовал приведенный ниже скрипт, но не смог получить уведомление по электронной почте. SMTP сервер работает нормально и без проблем. Могу ли я узнать, в чем проблема с моим кодом?

Инструменты:

  1. Использование powershell v2.0
  2. Использование .Net 4
  3. Window Server 2008
$Output = ".\Name.txt"

If (Get-Content -Path $Output | Where-Object {$_.Count -gt 2})
{
    $MailArgs = @{
            'To'          = "myemail@company.com"
            'From'        = "from@company.com"
            'Subject'     = "Pending. "
            'Attachments' =  $Output
            'Body'        = "Please close it"

            'SmtpServer' = "exchangeserver.com"
    }

    Send-MailMessage @MailArgs
}

Пример выходного файла отправит электронное письмо

| Name | PassportNo |    DOB     |                                      |
+------+------------+------------+--------------------------------------+
| A    | IDN7897    | 29-08-1980 | << once got this row will send email |
| B    | ICN5877    | 14-08-1955 |                                      |
| C    | OIY7941    | 01-08-1902 |                                      |
+------+------------+------------+--------------------------------------+

1 Ответ

2 голосов
/ 01 ноября 2019

Как прокомментировано, ваш тест If неверен.

Используя If (Get-Content -Path $Output | Where-Object {$_.Count -gt 2}), вы пропускаете каждую отдельную строку из файла и проверяете, является ли свойство .Count в этой отдельной строке больше 2 (что, конечно,никогда не бывает)

Измените If на

If ((Get-Content -Path $Output).Count -gt 2)

, чтобы свойство .Count сообщало вам общее количество строк в файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...