none
Уведомление по почте. RRS feed

  • Вопрос

  • Добрый день Уважаемые специалисты!

    Есть один скриптец-который проверяет доступность хостов.

    Вопрос: Как сделать так, что бы его можно было бы отправить по почте и сразу в формате HTML (не вложенным) а именно в теле письма-как отчет ?

    Спасибо!



    #Change value of the following parameter as needed 
    $OutputFile = "D:\abhishek\reports\Ping-Report.htm" 
    Remove-Item $OutputFile -ErrorAction SilentlyContinue 
    $ServerList = Get-Content "D:\abhishek\serverlist.txt" 
     
    Function GetStatusCode 
    {  
        Param([int] $StatusCode)   
        switch($StatusCode) 
        { 
            0         {"Online"} 
            11001   {"Buffer Too Small"} 
            11002   {"Destination Net Unreachable"} 
            11003   {"Destination Host Unreachable"} 
            11004   {"Destination Protocol Unreachable"} 
            11005   {"Destination Port Unreachable"} 
            11006   {"No Resources"} 
            11007   {"Bad Option"} 
            11008   {"Hardware Error"} 
            11009   {"Packet Too Big"} 
            11010   {"Request Timed Out"} 
            11011   {"Bad Request"} 
            11012   {"Bad Route"} 
            11013   {"TimeToLive Expired Transit"} 
            11014   {"TimeToLive Expired Reassembly"} 
            11015   {"Parameter Problem"} 
            11016   {"Source Quench"} 
            11017   {"Option Too Big"} 
            11018   {"Bad Destination"} 
            11032   {"Negotiating IPSEC"} 
            11050   {"General Failure"} 
            default {"Failed"} 
        } 
    } 
     
     
    $Result = @() 
    Foreach($ServerName in $ServerList) 
    { 
        $pingStatus = Get-WmiObject -Query "Select * from win32_PingStatus where Address='$ServerName'" 
             
        $Uptime = $null 
        if($pingStatus.StatusCode -eq 0) 
        { 
            $Uptime = .\uptime.exe $ServerName 
            #$OperatingSystem = Get-WmiObject Win32_OperatingSystem -ComputerName $ServerName -ErrorAction SilentlyContinue 
            #$Uptime = GetUptime( $OperatingSystem.LastBootUpTime ) 
             
             } 
         
        $Result += New-Object PSObject -Property @{ 
            ServerName = $ServerName 
            IPV4Address = $pingStatus.IPV4Address 
            Status = GetStatusCode( $pingStatus.StatusCode ) 
            Uptime = $Uptime 
        } 
    } 
     
    if($Result -ne $null) 
    { 
        $HTML = '<style type="text/css"> 
        #Header{font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;width:100%;border-collapse:collapse;} 
        #Header td, #Header th {font-size:14px;border:1px solid #98bf21;padding:3px 7px 2px 7px;} 
        #Header th {font-size:14px;text-align:left;padding-top:5px;padding-bottom:4px;background-color:#A7C942;color:#fff;} 
        #Header tr.alt td {color:#000;background-color:#EAF2D3;} 
        </Style>' 
     
        $HTML += "<HTML><BODY><Table border=1 cellpadding=0 cellspacing=0 id=Header><caption><B>Creaded By Abhishek Borole</B></caption> 
            <TR> 
                <TH><B>Server Name</B></TH> 
                <TH><B>IP Address</B></TD> 
                <TH><B>Status</B></TH> 
                <TH><B>Uptime</B></TH> 
            </TR>" 
        Foreach($Entry in $Result) 
        { 
            if($Entry.Status -ne "Online") 
            { 
                $HTML += "<TR bgColor=Red>" 
            } 
            else 
            { 
                $HTML += "<TR>" 
            } 
            $HTML += " 
                            <TD>$($Entry.ServerName)</TD> 
                            <TD>$($Entry.IPV4Address)</TD> 
                            <TD>$($Entry.Status)</TD> 
                            <TD>$($Entry.Uptime)</TD> 
                        </TR>" 
        } 
        $HTML += "</Table></BODY></HTML>" 
     
        $HTML | Out-File $OutputFile 
    }



    • Изменено rеstless 23 сентября 2013 г. 9:25
    23 сентября 2013 г. 9:19

Ответы

  • Send-MailMessage -Subject "Report" -From admin@contoso.com -To report@contoso.com `
    	-SmtpServer mail.contoso.com -Body ($HTML | Out-String) -BodyAsHtml 

    • Помечено в качестве ответа rеstless 24 сентября 2013 г. 6:56
    23 сентября 2013 г. 15:18
    Отвечающий

Все ответы

  • Send-MailMessage -Subject "Report" -From admin@contoso.com -To report@contoso.com `
    	-SmtpServer mail.contoso.com -Body ($HTML | Out-String) -BodyAsHtml 

    • Помечено в качестве ответа rеstless 24 сентября 2013 г. 6:56
    23 сентября 2013 г. 15:18
    Отвечающий

  • Спасибо большое!

    Да я тут пытаюсь "слипить" универсальный скрипт, который бы просматривал статистику доступности хостов, да еще и аккумулировал бы все это за сутки-или за ночь, а потом собирал бы это в красочную табличку. Да только вот всего вместе не найти, все по отдельности, да и в PowerShell  я не профи.

    System Center конечно хорошо, но с ним столько возни, да и оповещений там как звезд в космосе.Posh в данном случае быстр и лаконичен.

     У вас случайно не завалялось такого универсального скриптика ?

     Спасибо еще раз!


    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    24 сентября 2013 г. 4:30
  • Таких скриптов не знаю. Попробуйте использовать Zabbix,Nagios или посмотрите утилиту - http://www.nirsoft.net/utils/multiple_ping_tool.html


    • Изменено KazunEditor 24 сентября 2013 г. 7:13
    24 сентября 2013 г. 7:12
    Отвечающий
  • Спасибо еще раз!

    Скажите а вот унифицировать скрипт, что бы он мог в таблице показывать с учетом интервала за ночь-доступность/недоступность определенных хостов ?

    Спасибо!


    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    3 октября 2013 г. 7:26