почтовый вывод powershell сценария

Для Резервного копирования командной строки SQL Server, подобного mysqldump, пробуют это:

BACKUP DATABASE SampleDatabase
TO DISK = 'Z:\SQLServerBackups\SampleDatabase.bak' 
WITH FORMAT;
GO

сохраните это в C:\backupMSSQL.SQL и затем введите это в командной строке:

OSQL.EXE -U sa -P -i C:\backupMSSQL.SQL

это должно быть работой как mysqldump для mysql...

4
задан 13 April 2012 в 20:49
6 ответов

Если вы хотите выйти из PowerShell, вы можете перенаправить вывод скрипта в текстовый файл и использовать стороннюю почтовую программу командной строки, такую ​​как blat, для отправки текстового файла в качестве тела ( или вложение) сообщения электронной почты и укажите SMTP-сервер, с которого требуется выполнить возврат.

2
ответ дан 3 December 2019 в 03:21

Это всего лишь одно из возможных решений; их много.

[string]$emailBody = ""
$emailBody += "This is line 1<br />"
$emailBody += "This is line 2<br />"
$emailBody += "This is line 3<br />"
Send-MailMessage -From "$senderName <$senderAddr>" -To "$recptName <$recptAddr>" -Subject "$emailSubject" -Body $emailBody -SMTPServer $smtpServer -BodyAsHTML

Есть ли в этом смысл?

2
ответ дан 3 December 2019 в 03:21

Мое решение некрасивое, и в нем не используется powershell, но я использую его в течение многих лет, чтобы делать именно то, что вы пытаетесь достичь.

@echo off
set s1=dfsrsrvr1
set s2=dfsrsrv2

set output=%TEMP%\dfsr.txt
echo DFS Replication Backlog Report>%OUTPUT%
echo.>>%OUTPUT%
echo For each DFS replicated share, any backlog is displayed below.>>%OUTPUT%
echo The first value is the backlog from %S2% to %S1%, the second value is the reverse>>%OUTPUT%
echo.>>%OUTPUT%

echo Accounts>>%OUTPUT%
echo ========>>%OUTPUT%
dfsrdiag backlog /rgname:Accounts /rfname:Accounts /sendingmember:%S2% /receivingmember:%S1% | head -n 2 | tail -n 1 | cut -d: -f2>>%OUTPUT%
dfsrdiag backlog /rgname:Accounts /rfname:Accounts /sendingmember:%S1% /receivingmember:%S2% | head -n 2 | tail -n 1 | cut -d: -f2>>%OUTPUT%

echo.>>%OUTPUT%

blat "%OUTPUT%" -to logs@example.com -server mta.example.com -f user@example.com -subject "DFS Replication Report %DATE% %TIME:~0,5%"

Оно полагается на head , вырезать и хвост из GNU Unix Utils и blat почтовая программа командной строки .

Он также использует ] утилита dfsrdiag (которая должна находиться на вашем сервере) для получения необходимой статистики от службы DFSR. В этом примере имя группы репликации - Учетные записи, настройте по вкусу / добавьте дополнительные группы репликации по мере необходимости.

1
ответ дан 3 December 2019 в 03:21

Использование Send-MailMessage , вероятно, самый простой и лучший способ продолжить.

Он недоступен в более ранних версиях PowerShell, поэтому в качестве альтернативы вы можете напрямую использовать почтовые объекты .NET (см. http://vblog.strutt.org.uk/2011/09/sending-email -from-powershell / для получения дополнительной информации).

0
ответ дан 3 December 2019 в 03:21

Я смог поработать с несколькими предоставленными ответами, чтобы найти решение. Ключевым моментом было то, что вы не можете передать Write-Host в файл. Я добавил следующий код, чтобы записать результат прямо в тело письма. Работает как чудо.

$Emailbody += "$BacklogFileCount files in backlog $SendingMember->$ReceivingMember for $RGName
"
$emailFrom = "sender@foobar.com"
$emailTo = "recipient@foobar.com"
$subject = "DFS Backlog Report"
$smtpServer = "MailServer"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $Emailbody)
0
ответ дан 3 December 2019 в 03:21

One method of sending this via email would be to redirect the console output to a file:

$timeStamp = [DateTime]::Now.ToString("yyyyMMddHHmmss") #configure a timestamp variable
$attachFile = c:\temp\attach$timestamp.txt #configure txt file to which we'll redirect the console output.  Using the timestamp variable to generate a unique file name
Write-Host "Some output here" >> $attachFile

Then use send-mailmessage employing the -Attachments parameter ...documentation is here:

http://technet.microsoft.com/en-us/library/dd347693.aspx

Common gotcha's:

  • Exchange relay not configured to allow sending of mails from the box running the script
  • Anti-virus mass-mailing worm protection can prevent scripted emails
0
ответ дан 3 December 2019 в 03:21

Теги

Похожие вопросы