Попытка создать сценарий для отправки электронной почты, если веб-сервер недоступен [дубликат]

Возможно, вам это больше не нужно, но я недавно написал класс java для этого. По-видимому, Яник Рочон сделал что-то подобное. Он преобразует числа до 999 Novemdecillion (999 * 10 ^ 60). Это могло бы сделать больше, если бы я знал, что произошло после Novemdecillion, но я готов был бы поспорить, что это не нужно. Просто введите число как строку в центах. Вывод также грамматически корректен.

Вот ссылка на Bitbucket Repo

3
задан alroc 3 July 2013 в 20:01
поделиться

1 ответ

Поскольку вы используете Powershell v3, вы должны использовать Send-MailMessage вместо работы с System.Net.

$URLListFile = "C:\URLList.txt"  
$URLList = Get-Content $URLListFile -ErrorAction SilentlyContinue 
  $Result = @() 


  Foreach($Uri in $URLList) { 
  $time = try{ 
  $request = $null 

  $result1 = Measure-Command { $request = Invoke-WebRequest -Uri $uri } 
  $result1.TotalMilliSeconds 
  }  
  catch 
  { 

   $request = $_.Exception.Response 
   $time = -1 
  }   
  $result += [PSCustomObject] @{ 
  Time = Get-Date; 
  Uri = $uri; 
  StatusCode = [int] $request.StatusCode; 
  StatusDescription = $request.StatusDescription; 
  ResponseLength = $request.RawContentLength; 
  TimeTaken =  $time;  
  } 

} 

if($result -ne $null) 
{ 
    $Outputreport = "<HTML><TITLE>Website Report Status</TITLE><BODY background-color:peachpuff><font color =""#99000"" face=""Microsoft Tai le""><H2> Website Report Status </H2></font><Table border=1 cellpadding=0 cellspacing=0><TR bgcolor=gray align=center><TD><B>URL</B></TD><TD><B> Code </B></TD><TD><B> Status </B></TD><TD><B> Duration </B></TD><TD><B> MS (Ping) </B></TD</TR>" 
    Foreach($Entry in $Result) 
    { 
        if($Entry.StatusCode -ne "200") 
        { 
           $Outputreport += "<TR bgcolor=red>" 
        } 
        else 
        { 
            $Outputreport += "<TR>" 
        } 
        $Outputreport += "<TD>$($Entry.uri)</TD><TD align=center>$($Entry.StatusCode)</TD><TD align=center>$($Entry.StatusDescription)</TD><TD align=center>$($Entry.ResponseLength)</TD><TD align=center>$($Entry.timetaken)</TD></TR>" 
    } 
    $Outputreport += "</Table></BODY></HTML>" 
} 

$Outputreport | out-file C:\URLReport.htm 
Invoke-Item C:\URLReport.htm   

$EmailFrom = "noreply@domain.com"
$EmailTo = "destinyemail@domain.com"
$EmailSubject = "URL Report"
$emailbody = " body message "
$SMTPServer = "smtpserver.company.com"

$emailattachment = "C:\URLReport.htm"

Send-MailMessage -Port 587 -SmtpServer $SMTPServer -From $EmailFrom -To $EmailTo -Attachments $emailattachment -Subject $EmailSubject -Body $emailbody -Bodyashtml;
8
ответ дан alroc 15 August 2018 в 21:11
поделиться
  • 1
    Это отлично работает, спасибо. Я не знал об этом & quot; Send-MailMessage & quot; функция. Вы, сэр, мне очень помогли. Большое спасибо ! :) – InLoveWithPs1 3 July 2013 в 20:05
Другие вопросы по тегам:

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