Как использовать Get-EventLog, Convert-ToHTML и добавить поле поиска javascript для фильтрации записей?

Чтобы описать то, что я пытаюсь сделать. Примечание: пока что я использую ctrl f, который по-прежнему работает быстрее, чем средство просмотра событий Windows на медленном сервере.

  1. Я хочу использовать Get-EventLog PowerShell (готово)
  2. Преобразуйте журнал системных событий в красиво отформатированный HTML-файл (готово)
  3. Включите возможность поиска в данных EventLog, созданных в формате HTML, с помощью поля поиска JavaScript, которое по существу будет фильтровать данные, как вы могли бы использовать функции фильтрации в электронной таблице Excel (пока не работает в Get-EventLog.ps1)

У меня есть тестовый сценарий, в котором это работает, потому что я установил document.getElementByID, — table = document.getElementById («myTable»); — сам создаю html-таблицу и устанавливаю ID. Я не могу использовать ту же функцию, чтобы получить идентификатор информации EventLog, чтобы применить тот же принцип

Артефакты:

Работающая функция поиска из Convert-toHTML-and-Search-Test.htm

#------------------------------------------------#
#       Convert to HTML and Search       #  
#------------------------------------------------#
#                    Version 1                            #

$TESTCSSbody = @"

  <h1>Type in a value from the table below to search</h1>

  <input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search..." title="Type in a name">
  
  <table id="myTable">
  <tr class="header">
    <th style="width:auto;">Hostname</th>
    <th style="width:auto;">DomainName</th>
    <th style="width:auto;">ServerRole</th>
    <th style="width:auto;">ServerDescription</th>
    <th style="width:auto;">MaintenanceWindow</th>
    <th style="width:auto;">PatchingStatus</th>
  </tr>
<tr>
    <td>Server1</td>
    <td>Domain1</td>
    <td>Role</td>
    <td>Domain Controller</td>
    <td>MaintenanceW1</td>
    <td>Patched</td>

  </tr>
  <tr>
    <td>Server2</td>
    <td>Domain2</td>
    <td>Role</td>
    <td>Domain Controller</td>
    <td>MaintenanceW2</td>
    <td>Pending</td>
  </tr>

  <tr>
    <td>Server3</td>
    <td>Domain3</td>
    <td>Role</td>
    <td>Domain Controller</td>
    <td>MaintenanceW3</td>
    <td>Failed</td>
  </tr>

</table>

<script>
function myFunction() {
    var input, filter, table, tr, td, i, ii;
    input = document.getElementById("myInput");
    filter = input.value.toUpperCase();
    table = document.getElementById("myTable");
    tr = table.querySelectorAll("tbody tr:not(.header)");
    for (i = 0; i < tr.length; i++) {
        var tds = tr[i].getElementsByTagName("td");
        var found = false;
        for (ii = 0; ii < tds.length && !found; ii++) {
            if (tds[ii].textContent.toUpperCase().indexOf(filter) > -1) {
                found = true;
                break;
            }
        }
        tr[i].style.display = found?"":"none";
    }
}
</script>

<style>
#myInput {
  background-image: url('/css/searchicon.png');
  background-position: 10px 10px;
  background-repeat: no-repeat;
  width: 20%;
  font-size: 16px;
  padding: 12px 20px 12px 40px;
  border: 1px solid #ddd;
  margin-bottom: 12px;
}

#myTable { width: auto;  border: 1px solid #ddd; font-size: 18px;}
#myTable th, #myTable td { text-align: left; padding: 12px; }
#myTable tr {  border-bottom: 1px solid #ddd; }
#myTable tr.header, #myTable tr:hover { background-color: #c4c4c4;
}

 h1 { text-align: left; font-size: 20pt; font-family: Calibri; }
 h5, th { text-align: left; font-size: 14pt; font-family: Calibri; }
table { width: auto; font-family: Calibri; box-shadow: 5px 5px 5px #888; border: thin ridge grey; }
th { background: black; color: white; max-width: 400px; padding: 5px 10px; }
td { font-size: 11pt; padding: 5px 20px; color: black; }
tr { background: #b8d1f3; }
tr:nth-child(even) { background: white; }
tr:nth-child(odd) { background: #f1f1f1; }
tr:hover {background-color: #ddd;}

</style>
"@


#HTML Report info
$SEARCHTESTREPORT = "C:htmlreportsConvertToHTML-and-Search-Test.htm"
$SEARCHTESTREPORTtitle = "TESTING SEARCH FUNCTIONALITY"

ConvertTo-Html -Body $TESTCSSbody -Title $SEARCHTESTREPORTtitle |

#Output the HTML File to $HTMLREPORT
Out-File $SEARCHTESTREPORT
start $SEARCHTESTREPORT


Get-EventLog.ps1

#----------------------------------------------------------------------------#
# This script produces the Windows Event Viewer in HTML #
#----------------------------------------------------------------------------#

#HTML Report info
$HTMLREPORT = "C:Get-EventLogeventlogreport.htm"
$HTMLREPORTtitle = "Event Log Report"

#Apply CSS Formatting
$CSSbody = @"
  
<h1>Event Viewer</h1>

<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search..." title="Type in a name">

<script>
function myFunction() {
    var input, filter, table, tr, td, i, ii;
    input = document.getElementById("myInput");
    filter = input.value.toUpperCase();
    table = document.getElementById("myTable");
    tr = table.querySelectorAll("tbody tr:not(.header)");
    for (i = 0; i < tr.length; i++) {
        var tds = tr[i].getElementsByTagName("td");
        var found = false;
        for (ii = 0; ii < tds.length && !found; ii++) {
            if (tds[ii].textContent.toUpperCase().indexOf(filter) > -1) {
                found = true;
                break;
            }
        }
        tr[i].style.display = found?"":"none";
    }
}
</script>

<style>
#myInput {
  background-position: 10px 10px;
  background-repeat: no-repeat;
  width: 20%;
  font-size: 16px;
  padding: 12px 20px 12px 40px;
  border: 1px solid #ddd;
  margin-bottom: 12px;
}

#myTable { width: auto;  border: 1px solid #ddd; font-size: 18px;}
#myTable th, #myTable td { text-align: left; padding: 12px; }
#myTable tr {  border-bottom: 1px solid #ddd; }
#myTable tr.header, #myTable tr:hover { background-color: #c4c4c4;
}

h1 { text-align: left; font-size: 20pt; font-family: Calibri; }
h5, th { text-align: left; font-size: 11; font-family: Calibri; }
table { width: auto; font-family: Calibri; box-shadow: 5px 5px 5px #888; border: thin ridge grey; }
th { background: #00078A; color: white; max-width: 400px; padding: 5px 10px; }
td { font-size: 11pt; padding: 5px 20px; color: black; }
tr { background: #b8d1f3; }
tr:nth-child(even) { background: white; }
tr:nth-child(odd) { background: #f1f1f1; }
tr:hover {background-color: #ddd;}

</style>
"@

#EntryTypes:
#-EntryType Error, FailureAudit, Information, SuccessAudit, Warning

#Lognames
#-Logname Application, Security, Setup, System

#$Begin = Get-Date -Date 01/01/2021 08:00:00
#$End = Get-Date -Date 04/02/2021 16:00:00
Get-EventLog -LogName System -Newest 100 |
Select -Property EventID,Source,MachineName,EntryType,Message,TimeGenerated,UserName |
ConvertTo-Html -Body $CSSbody -Title $HTMLREPORTtitle |

#Output the HTML File to $HTMLREPORT
Out-File $HTMLREPORT
start $HTMLREPORT

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *