Как добавить полосу прокрутки в существующие таблицы powershell в отчете HTML с несколькими динамическими c таблицами - PullRequest
1 голос
/ 21 марта 2020

Я довольно долго бился головой об стену, пытаясь понять это, но я просто застрял.

У меня есть скрипт Powershell, который выполняет сбор большого количества данных о сервер, а затем выводит в разумный отчет HTML с использованием набора таблиц. У меня нет реальной проблемы с частями сбора данных, и вы можете видеть, что у меня есть простое построение отчета с использованием ConvertTo- HTML - Fragment.

Что я не могу понять, как добавить полосы прокрутки к таблицам, когда они больше, чем, скажем, 300px. Я попытался включить все виды строк кода классов tbody и div, и я просто не могу понять, как заставить это работать так, как я хочу.

В идеальном мире я бы Мне нравится, что мои таблицы больше похожи на те, которые можно увидеть на полпути внизу страницы https://mdbootstrap.com/docs/jquery/tables/scroll/, с возможностью прокрутки, поиска и сортировки, но я понял, что сейчас это далеко за пределы моего знания, так что я доволен только попыткой чтобы мои таблицы прокручивались на данный момент, потому что некоторые таблицы, например, Services, Events и т. д. c, просто становятся слишком большими и делают HTML отчет слишком длинным.

Вот урезанная версия сценарий:

$ComputerName = $env:COMPUTERNAME
$Timecheck = (get-date -format "MM-dd-yyyy_HH-mm")
$Date = Get-Date
$htmlReport = @()
$htmlbody = @()
$htmlout = "$($ComputerName + "_" + $Timecheck).html"
$spacer = "<br />"

function HTMLCreate
{
    $htmlheader = @"
                    <style>
                    BODY{font-family: Arial; background: #eaf3dc; font-size: 8pt;}
                    H1{font-size: 20px; color: #5b8f22;}
                    H2{font-size: 18px;color: #5b8f22;}
                    H3{font-size: 16px;color: #5b8f22;}         
                    TABLE{border: 1px solid black; border-collapse: collapse; font-size: 8pt;table-layout: fixed; width: 100%; display: block; text-align:center; }
                    TH{border: 1px solid black; background: #5b8f22; padding: 5px; color: #ffffff;}
                    TD{border: 1px solid black; background: #d7e9bb; padding: 5px; }
                    </style>

                    <body>

                    <h1>Server Data: $ComputerName</h1>
                    <h3>Created: $Date by $User</h3>
"@

    $htmlend = "</body>"

    $htmlReport = $htmlheader + $htmlbody + $htmlend

    $htmlReport | Out-File $htmlout -Encoding Utf8
}



    $subhead = "<h2>System Information</h2>"
    $htmlbody += $subhead

    try
    {
        $SystemInfo = Get-CimInstance -ClassName Win32_ComputerSystem | Select Name, Status, Domain, Manufacturer, Model

        $htmlbody += $SystemInfo | ConvertTo-Html -Fragment
        $htmlbody += $spacer

        Write-Host " "
        Write-Host "     $ComputerName System Data Collection Complete.     " -ForegroundColor Green
        Write-Host " "
        Add-Content $LogFile -Value "`n$($Timestamp.Invoke())  -  $ComputerName System Data Collection Complete"

    }
    catch
    {
        Write-Warning "`n$($Timestamp.Invoke())  -  $ComputerName System Data Collection error encountered.  -  $($_.Exception.Message)"
        $htmlbody += "<p>System Data Collection error encountered. $($_.Exception.Message)</p>"
        $htmlbody += $spacer
        Add-Content $LogFile -Value "`n$($Timestamp.Invoke())  -  $ComputerName System Data Collection error encountered.  -  $($_.Exception.Message)"
    }




    $subhead = "<h2>Operating System Information</h2>"
    $htmlbody += $subhead

    try
    {
        $OSInfo = Get-CimInstance -ClassName Win32_OperatingSystem | Select @{ Name = 'Operating System'; Expression = { $_.Caption } },
                                                                            Status, Version,
                                                                            @{ Name = 'Architecture'; Expression = { $_.OSArchitecture } },
                                                                            Manufacturer, Organization, InstallDate, WindowsDirectory,
                                                                            @{ Name = 'Last Boot Time'; Expression = { $_.LastBootUpTime } }

        $htmlbody += $OSInfo | ConvertTo-Html -Fragment
        $htmlbody += $spacer

        Write-Host " "
        Write-Host "     $ComputerName Operating System Data Collection Complete.     " -ForegroundColor Green
        Write-Host " "
        Add-Content $LogFile -Value "`n$($Timestamp.Invoke())  -  $ComputerName Operating System Data Collection Complete"

    }
    catch
    {
        Write-Warning "`n$($Timestamp.Invoke())  -  $ComputerName Operating System Data Collection error encountered.  -  $($_.Exception.Message)"
        $htmlbody += "<p>Operating System Data Collection error encountered. $($_.Exception.Message)</p>"
        $htmlbody += $spacer
        Add-Content $LogFile -Value "`n$($Timestamp.Invoke())  -  $ComputerName Operating System Data Collection error encountered.  -  $($_.Exception.Message)"
    }


HTMLCreate

Я ценю любые рекомендации. Я совсем не разбираюсь в том, как включить css в Powershell, и хотел бы сохранить ту же самую базовую структуру сценария c, если смогу.

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