首先,如果我問的是一個非常菜鳥的問題,我會道歉,我是一個初學者的 powershell 用戶,我在腳本方面沒有太多的經驗,我在使用 powershell 輸出 html 報告時遇到了一些問題。我想根據利用率百分比更改每行的顏色,無論它是高于還是低于 90%。但是我只設法改變第一行的顏色。
我有 2 個檔案用于輸出報告。
來自 agg.csv 的輸出
Aggregate_01_Data1,10.01TB,90%,96.93TB,online,86.92TB,
Aggregate_02_Data1,9.03TB,91%,96.93TB,online,87.90TB,
root_Aggregate_01,17.85GB,85%,368.4GB,online,350.6GB,
root_Aggregate_02,17.85GB,95%,368.4GB,online,350.6GB,
aggregate.csv 的輸出
Aggregate,Size,Available,Used,Utilized,State
Aggregate_01_Data1,96.93TB,10.01TB,86.92TB,90,online
Aggregate_02_Data1,96.93TB,9.03TB,87.90TB,91,online
root_Aggregate_01,368.4GB,17.85GB,350.6GB,85,online
root_Aggregate_02,368.4GB,17.85GB,350.6GB,95,online
我的代碼生成 html 報告。
$a1=gc $TPATH\agg.csv
$b1 =$a1
for ($i1 = 0;$i1 -lt $a1.count;$i1 )
{
$c1=$b1[$i1].split(",",10)
$c = $c1[2].Length
$c = $c - 1
$d1=$c1[0] "," $c1[3] "," $c1[1] "," $c1[5] "," $c1[2].remove($c) "," $c1[4]
$d1 | Out-File ("$TPATH\aggregate.csv") -Encoding UTF8 -append
$bodyB = (import-csv $TPATH\aggregate.csv) |Select Aggregate,Size,Available,Used,Utilized,State -OutVariable ag | ConvertTo-Html -Fragment |
foreach { if($ag.Utilized -gt 90) {$_ -replace "<tr>", "<tr bgcolor=#FE0808>"}else{$_ -replace "<tr>", "<tr bgcolor=#E5FCA1>"}} |Out-String
}
convertTo-HTML -Body "<br> $bodyB" |out-file $PATH\Netapp.html
我的最終輸出看起來像這樣

我怎樣才能得到這樣的輸出,如果閾值在 Utilized 列中高于 90%,我希望顏色變為紅色,如果閾值低于 90%,我希望將顏色變為綠色。

提前感謝那些愿意提供幫助的人,非常感謝您在這方面的幫助。
謝謝你。
uj5u.com熱心網友回復:
替換-OutVariable ag為-PipelineVariable ag,以便$ag在您的foreach( ForEach-Object) 腳本塊中僅指手頭的單個輸入物件。
common
-PipelineVariable(-pv) 引數的目的是將當前輸出的物件存盤在自選變數中,以便稍后在同一管道中的腳本塊中訪問它。相比之下,common
-OutVariable(-ov) 引數的目的是將命令的所有輸出收集到自選變數中,以便稍后在不同的后續陳述句中進行處理,而不是在同一管道中。- 如果您確實在同一管道中的腳本塊中訪問此類變數,您將看到到目前為止累積的輸出物件(這解釋了您看到的行為 - 見下文)。
至于你嘗試了什么:
由于錯誤使用-OutVariable ag,您的腳本塊看到了迄今為??止在變數中收集的Import-Csv輸出物件,而不是手頭的輸出物件。$ag
因此,從第二個輸出物件開始,$ag實際上是一個物件陣列,訪問其. Utilized屬性會導致成員訪問列舉,因此回傳一個利用率值陣列。
由于與所有 PowerShell 比較運算子一樣,當其 LHS 為陣列-gt時充當過濾器,因此只要值陣列中的至少一個元素滿足此條件,就開始生成回傳值(匹配值的子陣列)。$ag.Utilized -gt 90
在諸如條件陳述句之類的布爾背景關系中if,非空陣列被解釋為$true.
因此,實際上只要上面的第一個值是($ag.Utilized -gt 90)回傳陣列的一部分,就會回傳,并且始終保持為真。$true90
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/517250.html
標籤:html电源外壳报告
上一篇:四舍五入powershell
