2017-11-14 16 views
-1

私のスクリプトは、HTMLに変換して電子メールでレポートを送信するよりも、サーバーから情報を引き出しています。 スニペット:powershell ConvertTo-Htmlクラスを追加

$sourceFile = "log.log" 
$targetFile = "log.html" 
$file = Get-Content $sourceFile 
$fileLine = @() 
foreach ($Line in $file) { 
    $MyObject = New-Object -TypeName PSObject 
    Add-Member -InputObject $MyObject -Type NoteProperty -Name Load -Value $Line 
    $fileLine += $MyObject 
} 
$fileLine | ConvertTo-Html -Property Load -head '<style> .tdclass{color:red;} </style>' | Out-File $target 

現在のHTMLレポートの抜粋:

<table> 
<colgroup><col/></colgroup> 
<tr><th>Load on servers</th></tr> 
<tr><td>Server1 load is 2442</td></tr> 
<tr><td>Server2 load is 6126</td></tr> 
<tr><td>Server3 load is 6443</td></tr> 
<tr><td> </td></tr> 
<tr><td>Higher than 4000:</td></tr> 
<tr><td>6126</td></tr> 
<tr><td>6443</td></tr> 
</table> 

これは、TRとTDを持つテーブルを含むHTMLレポートを生成します。 でtdを生成させる方法はありますか?そのため、クラス名をスタイルで-headプロパティに挿入し、4000より高い:tdsの赤色にすることができますか?

+0

私は頭の上からそれをどうやって行うのか正確にはわかりませんが、出力ファイルにパイプするのではなく、変数に 'ConvertTo-HTML'の出力を保存したいと思うでしょう。次に、タグ名( 'td')でプロパティをクエリし、" * higher * "のような内部テキストを持つものを選択して、外側のhtmlにクラス名を追加したいと思うでしょう。 –

+0

'$ out.ParsedHTML.getElementsByTagName(" td ")| (where {$ _。innerText-like "Higher"})。outerHTML'しかし、その値を変更する方法がわかりません。 –

+0

ブライスマクドナルド、これは確かに役に立つかもしれません。 – catalin

答えて

0

Get-Help ConvertTo-Htmlコマンドを使用すると、ConvertTo-Htmlコマンドのすべてのパラメータを取得できます。以下は出力されます:

ConvertTo-Html [[-Property] <Object[]>] [[-Head] <String[]>] [[-Title] <String>] [[-Body] <String[]>] [-As<String>] [-CssUri <Uri>] [-InputObject <PSObject>] [-PostContent <String[]>] [-PreContent <String[]>][<CommonParameters>] 

あなたは、外部CSSファイルを作成し、[-CssUri]パラメータにCSSファイルのパスを与えることができます。

+1

あなたのお時間をいただきありがとうございますが、これは私の問題を解決しません。なぜなら、HTMLコードはクラス属性を持たないからです。クラスでHTMLを生成するにはpowershellが必要なので、CSSファイルでスタイルを設定することができます。私は​​の色を赤色にする必要があります。 – catalin

+0

ありがとう@ theIncorrigible1 – Deepesh

+1

@cata HTMLクラスでCCSを適用する方法は1つですが、要素も使用します。このリンクのこのチェックで助けが必要な場合はhttps://www.w3schools.com/html/html_css.asp – Deepesh

関連する問題