2016-11-16 11 views
0

私が投稿しようとしているのと同様の質問をしました。私は自分のバージョンを作成するために、ソリューションを使用してみましたが、私は成功していませんでした。私は別のウェブサイトで見つけた以下のスクリプトを持っていて、探しているものには完璧ですが、出力はファイルに出力するのではなく、電子メールの本文として送信されます。私はそれをどうやってやりますか?また、誰かが少し説明するために忍耐を持っている場合、それは非常に高く評価される:)。事前にメール本文にDHCPスクリプトを出力する

$a = (netsh dhcp server 172.20.102.1 scope 172.20.104.0 show clients 1) 

$lines = @() 

foreach ($i in $a){ 
    if ($i -match "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"){ 
     If ($i -match "[0-9a-f]{2}[:-][0-9a-f]{2}[:-][0-9a-f]{2}[:-][0-9a-f]{2}[:-][0-9a-f]{2}[:-][0-9a-f]{2}"){  
      $lines += $i.Trim() 
     } 
    } 
} 
$csvfile = @() 

foreach ($l in $lines){ 
    $Row = "" | select Hostname,IP 
    $l = $l -replace '[0-9a-f]{2}[:-][0-9a-f]{2}[:-][0-9a-f]{2}[:-][0-9a-f]{2}[:-][0-9a-f]{2}[:-][0-9a-f]{2}', '' 
    $l = $l -replace ' - ',',' 
    $l = $l -replace '\s{4,}','' 
    $l = $l -replace '--','-' 
    $l = $l -replace '-D-','-' 
    $l = $l -replace '[-]{1}\d{1,2}[/]\d{1,2}[/]\d{4}','' 
    $l = $l -replace '\d{1,2}[:]\d{2}[:]\d{2}','' 
    $l = $l -replace 'AM','' 
    $l = $l -replace 'PM','' 
    $l = $l -replace '\s{1}','' 
    $l = $l + "`n" 
    $l = $l -replace '[,][-]',',' 
    $Row.IP = ($l.Split(","))[0] 
    #Subnet mask not used, but maybe later 
    #$Row.SubNetMask = ($l.Split(","))[1] 
    $Row.Hostname = ($l.Split(","))[2] 
    $csvfile += $Row 
} 


$csvfile | sort-object Hostname | Export-Csv "Out_List.csv" 


$a = "<style>" 
$a = $a + "body {margin: 10px; width: 600px; font-family:arial; font-size: 12px;}" 
$a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}" 
$a = $a + "TH{border-width: 1px;padding: 2px;border-style: solid;border-color: black;background-color: rgb(179,179,179);align='left';}" 
$a = $a + "TD{border-width: 1px;padding: 2px;border-style: solid;border-color: black;background-color: white;}" 
$a = $a + "</style>" 


$html = $csvfile | sort-object Hostname | ConvertTo-HTML | out-string 
Send-MailMessage -SmtpServer "exchange" -Body $html -BodyAsHtml -From "[email protected]" -To "@.com.au" -Subject "DHCP Report" 

おかげで、 ダニエル

答えて

0

あなたが試みることができる:

$html = $csvfile | sort-object Hostname | ConvertTo-HTML | out-string 
Send-MailMessage -SmtpServer "mail server" -Body $html -BodyAsHtml -From "[email protected]" -To "[email protected]" -Subject "DHCP Report" 

おかげで、ティム。ティムの答え@への追加として

+0

私が取得: 送る-はMailMessage:「をSystem.Objectの[変換できません] 'を、' Body 'パラメータで必要な' System.String '型に変更します。指定されたメソッドはサポートされていません。 私はちょっと手を洗って、それを動作させることができるかどうかを見ますが、私はPSとかなりゴミです。 – rdd2

+0

$ html = $ csvfile |ソートオブジェクトホスト名| ConvertTo-HTML |アウト文字列 –

+0

PS C:\ Windows \ system32> $ html | gm TypeName:Microsoft.PowerShell.Commands.HtmlWebResponseObject PS C:\ Windows \ system32> $ html |アウトストリング| gm TypeName:System.String out-stringは、文字列に変換する必要があります。私は上記の使用 –

1

あなたも、このような変換されたHTMLにCSSを追加することができます。

$style = @" 
<style> 
table { 
    width: 50%; 
    margin: auto; 
    border-collapse: collapse; 

} 

th, td { 
    text-align: left; 
    padding: 8px; 
    border-bottom: 1px solid #fff; 
} 

tr:nth-child(even){background-color: #f2f2f2} 

th { 
    background-color: #4CAF50; 
    color: white; 
} 
</style> 
"@ 
$html =import-Csv "Out_List.csv" |ConvertTo-Html -head $style |out-string 
+0

: Send-MailMessage: 'System.Object []'を 'System.String 'パラメーター' Body 'で必要です指定されたメソッドはサポートされていません 私はおそらくxDを壊してしまいました – rdd2

+0

@ rdd2コードを変更しました –

+0

グーグルで調べた後にout-stringを追加しようとしました。あなたの修正は、ちょうどhtmlフォーマットの下に貼り付けていますか? – rdd2

関連する問題