Powershell конвертирует содержимое текстового файла с вкладками в хорошо отформатированную таблицу HTML - PullRequest
0 голосов
/ 04 июня 2018

Я хочу обработать текстовый файл в хорошо отформатированную HTML-таблицу в powershell, ниже приводится содержимое файла -

Machine ID  Proc Name   Proc Inst  Status         Comment             
----------------------------------------------------------------------
1           BG          1          RUNNING        BG process started  
1           BG          2          RUNNING        BG process started  
1           BG          3          RUNNING        BG process started  
1           BGPREDICT   1          RUNNING        BG process started  
1           DLMGR       1          RUNNING        DLMGR process started
1           IAPJMS      1          NOT RUNNING                        
1           RPCBG       1          RUNNING        RPCBG process started
1           RPC_TCP_LI  1          RUNNING        RPC listener process started
1           RPC_UDP_LI  1          RUNNING        RPC listener process started
1           SPO         1          RUNNING        SPO Server process started
1           SPO         2          RUNNING        SPO Server process started
1           WIS         1          RUNNING        WIS process started 
1           WIS         2          RUNNING        WIS process started 
1           WIS         3          RUNNING        WIS process started 
1           WIS         4          RUNNING        WIS process started 
1           WIS         5          RUNNING        WIS process started 
1           WIS         6          RUNNING        WIS process started 
1           WISMBD      1          RUNNING        WISMBD process started
1           WISMBD      2          RUNNING        WISMBD process started
1           WQS         1          RUNNING        WQS process started 


Timed out waiting for system status response.

Я не могу преобразовать, поскольку они выглядят одинаково в форме HTML-таблицы, но получаювсе в одной ячейке в каждой строке, используя приведенный ниже фрагмент -

Get-Content $env:TEMP\stat.txt|ConvertTo-HTML -Property
   @{Label='Text';Expression={$_}}

Заголовок из текстового файла должен быть таким же, как и в HTML-таблице.помоги мне достичь этого.

1 Ответ

0 голосов
/ 04 июня 2018

Этот скрипт выполняет синтаксический анализ объекта, используя несколько замен RegEx для формирования CSV, а затем с помощью командлета ConvertFrom-Csv:

$table= (gc .\sample.txt -raw ) -replace "-{10,100}`r?`n" -replace "`r?`n *`r?`n"
$table -split "`r?`n" | %{
    If ($_ -notmatch 'Timed out'){
        "`"{0}`"" -f ($_ -replace " {2,15}",'","')
    }
}|ConvertFrom-Csv | ConvertTo-html | Set-Content .\Sample.html -Encoding UTF8

Пример ConvertFrom-Csv output

Machine ID Proc Name  Proc Inst Status      Comment
---------- ---------  --------- ------      -------
1          BG         1         RUNNING     BG process started
1          BG         2         RUNNING     BG process started
...snip..

Передано ConvertTo-html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTML TABLE</title>
</head><body>
<table>
<colgroup><col/><col/><col/><col/><col/></colgroup>
<tr><th>Machine ID</th><th>Proc Name</th><th>Proc Inst</th><th>Status</th><th>Comment</th></tr>
<tr><td>1</td><td>BG</td><td>1</td><td>RUNNING</td><td>BG process started</td></tr>
<tr><td>1</td><td>BG</td><td>2</td><td>RUNNING</td><td>BG process started</td></tr>
...snip...

И сохранено в файл, который вы можете просмотреть в браузере:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...