2017-04-04 97 views
0

我正在使用PowerShell處理監控報告。該腳本提取服務器詳細信息,磁盤狀態和應用程序狀態。如何將文本表格轉換爲PowerShell中的HTML表格

我能夠通過HTML表格中的郵件發送服務器詳細信息和磁盤狀態。但是讀取文件的內容(通過從Oracle DB中提取數據的批處理文件創建)並通過HTML格式的相同郵件發送不起作用。

下面是在文本文件中的數據:

**program-id  sta pid  start time   stop time** 

Clnt_dp   T 0   04/03/2017 08:00:03 04/03/2017 08:00:04 
Clnt_ds   R 5140  04/03/2017 08:00:03 
Clnt_rpc   R 8572  04/03/2017 08:00:03 
bksrvr   R 4692  04/03/2017 07:59:03 
chkw    T 0   04/03/2017 07:59:03 04/03/2017 08:09:04 
db    T 0   04/03/2017 07:59:01 04/03/2017 07:59:02 
dsaux    R 8444  04/03/2017 07:59:03 
dssched   R 4792  04/03/2017 07:59:03 
dsshares   R 7672  04/03/2017 07:59:03 
ixmonSvc   R 5552  04/03/2017 07:59:03 
jbd    R 7536  04/03/2017 07:59:02 
migration   R 476  04/03/2017 07:59:03 
notifSrvr   R 1220  04/03/2017 07:59:03 
timestamp   R 8928  04/03/2017 07:59:02 

任何人都可以請讓我知道如何才能實現?謝謝。

+1

你嘗試過什麼了嗎? –

+1

你有什麼試過的,你試過的怎麼都失敗了? SO不是代碼寫入服務;最好的問題是提供有用信息的問題,以便那些回答問題的人可以指導你設計自己的正確答案。參見[如何提出一個好問題](http://stackoverflow.com/help/how-to-ask)。 –

回答

0

您需要以固定的寬度間隔拆分字符串。使用你的文本文件摘錄,模仿獲取內容:

cls 
$content = @' 
**program-id  sta pid  start time   stop time** 

Clnt_dp   T 0   04/03/2017 08:00:03 04/03/2017 08:00:04 
Clnt_ds   R 5140  04/03/2017 08:00:03 
Clnt_rpc   R 8572  04/03/2017 08:00:03 
bksrvr   R 4692  04/03/2017 07:59:03 
chkw    T 0   04/03/2017 07:59:03 04/03/2017 08:09:04 
db    T 0   04/03/2017 07:59:01 04/03/2017 07:59:02 
dsaux    R 8444  04/03/2017 07:59:03 
dssched   R 4792  04/03/2017 07:59:03 
dsshares   R 7672  04/03/2017 07:59:03 
ixmonSvc   R 5552  04/03/2017 07:59:03 
jbd    R 7536  04/03/2017 07:59:02 
migration   R 476  04/03/2017 07:59:03 
notifSrvr   R 1220  04/03/2017 07:59:03 
timestamp   R 8928  04/03/2017 07:59:02 
'@ 
$content -split "`r*`n" | 
    select -Skip 2 -Property @{name='program-id';expression={$_.Substring(0 ,17).Trim()}}, #1st 
          @{name='sta';  expression={$_.Substring(18,4).Trim()}}, #2nd 
          @{name='pid';  expression={$_.Substring(22,11).Trim()}}, #3rd 
          @{name='start time';expression={$_.Substring(33,19).Trim()}}, #4th 
          @{name='stop time'; expression={$_.Substring(54).Trim()}} | #5th 
    ConvertTo-Html 

...和使用獲取內容...

Get-Content -Path 'c:\path\to\file.txt' | 
    select -Skip 2 -Property @{name='program-id';expression={$_.Substring(0 ,17).Trim()}}, #1st 
          @{name='sta';  expression={$_.Substring(18,4).Trim()}}, #2nd 
          @{name='pid';  expression={$_.Substring(22,11).Trim()}}, #3rd 
          @{name='start time';expression={$_.Substring(33,19).Trim()}}, #4th 
          @{name='stop time'; expression={$_.Substring(54).Trim()}} | #5th 
    ConvertTo-Html 
+0

嗨TechSpud, 謝謝。這工作! 我想檢查的另一件事是我需要檢查的值是T的sta列,然後標記完整的行背景顏色RED。我正在研究它,但如果你有一些方便,那麼將是非常有用的。 再次感謝! 乾杯 – user7813930

+0

我這樣做,但它比簡單的'ConvertTo-Html'複雜一點。看到我的答案:http://stackoverflow.com/a/39486625/1368849&http://stackoverflow.com/a/39530701/1368849。您可以正則表達式搜索並替換html輸出或類似內容,但您需要添加對「」元素的反向引用以匹配「​​val」值。 – TechSpud