Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

PowerShell: ConvertTo-Html

czwartek,

PowerShell: ConvertTo-Html

ConvertTo-Html to polecenie (cmdlet) w PowerShell, które umożliwia konwersję danych wejściowych na format HTML. Jest to część składni PowerShell używana do tworzenia dokumentów HTML z różnych danych wejściowych, takich jak obiekty .NET, dane tablicowe, wyniki zapytań itp. Użycie tego polecenia jest szczególnie przydatne w scenariuszach, gdzie chcesz wyeksportować dane w formie łatwej do czytania i udostępnienia, jak na przykład w raportach, stronach internetowych lub dokumentacji.

Do formatu HTML można przekształcić dowolny obiekt PowerShell, na przykład listę obiektów reprezentujących dane użytkowników, ConvertTo-Html sformatuje jako tabelę na stronie internetowej. Wyjście polecenia można dostosować, używając parametrów takich jak -Head, -Body, -PreContent-PostContent, co pozwala na dodanie niestandardowych nagłówków, zawartości i stopki do wygenerowanej strony HTML. ConvertTo-Html często używa się w połączeniu z innymi poleceniami PowerShell, aby przetworzyć dane przed ich konwersją na HTML. Na przykład, możesz użyć Get-Process do uzyskania listy procesów, a następnie użyć ConvertTo-Html, aby wyeksportować te dane do formatu strony internetowej.

Przykładowe użycie:

Get-Process | Select-Object Name, CPU | ConvertTo-Html -Title "Lista procesów" > procesy.html

To polecenie pobiera listę procesów (Get-Process), wybiera nazwę i użycie CPU każdego procesu (Select-Object), a następnie konwertuje ją na HTML (ConvertTo-Html) z tytułem "Lista procesów" i zapisuje wynik do pliku o nazwie procesy.html.

Style CSS

PowerShell sam w sobie nie ma wbudowanych stylów CSS. To środowisko używane głównie do automatyzacji zadań administracyjnych, a nie narzędzie przeznaczone do tworzenia interfejsów użytkownika lub stron internetowych, gdzie jest stosowana stylizacja CSS. Jednakże, gdy używasz ConvertTo-Html w PowerShell, na kilka sposobów możesz dodać własne style CSS do wygenerowanego HTML.

Możesz dodać style bezpośrednio do tagów HTML wewnątrz skryptu PowerShell. Przykładowo:

$css = "<style>body { font-family: Arial; } h1 { color: blue; }</style>"
Get-Process | ConvertTo-Html -Head $css | Out-File "procesy.html"

W tym przykładzie $css zawiera styl CSS, który jest wstawiony do sekcji <head> wygenerowanego dokumentu HTML.

Kolejna opcja to oddzielny plik CSS i odnieienie się do niego w generowanym HTML:

$cssLink = "<link rel='stylesheet' href='style.css' type='text/css'>"
Get-Process | ConvertTo-Html -Head $cssLink | Out-File "procesy.html"

W tym przypadku musisz mieć plik style.css dostępny w tej samej lokalizacji, co plik HTML.

Arkusz stylów z serwera

Możliwa jest integracja zewnętrznego arkusza stylów CSS, na przykład takiego jak Bootstrap, z kodem HTML generowanym przez PowerShell. Aby to zrobić, wystarczy dodać link do zewnętrznego arkusza stylów Bootstrap w nagłówku (<head>). Poniżej znajdziesz przykład, jak to zrobić.

  1. Znajdź URL do CDN (Content Delivery Network) dla Bootstrap. Na przykład, link do Bootstrap z oficjalnej strony Bootstrap.
  2. Następnie, użyj tego URL w swoim skrypcie PowerShell do stworzenia linku do Bootstrap w sekcji <head> dokumentu HTML.

Przykład:

# Link do zewnętrznego arkusza stylów Bootstrap
$bootstrapCss = "<link rel='stylesheet' href='https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css'>"

# Tworzenie HTML z wykorzystaniem Bootstrap
$htmlContent = Get-Process | ConvertTo-Html -Head $bootstrapCss

# Zapisywanie do pliku HTML
Out-File -FilePath "procesy.html" -Encoding UTF8 -InputObject $htmlContent

# Opcjonalnie: Otwarcie pliku w przeglądarce
Start-Process "procesy.html"

W tym przykładzie, do generowania danych jest używany cmdlet Get-Process, a jego wyjście podlega konwersji na HTML z wykorzystaniem ConvertTo-Html. Do sekcji <head> dodany jest link do Bootstrap, co oznacza zastosowanie styli Bootstrap na wygenerowanej stronie internetowej. Użycie Bootstrap lub innych zewnętrznych bibliotek CSS w ten sposób jest bardzo wygodne, ponieważ pozwala na szybkie i łatwe stylizowanie Twojego dokumentu HTML bez konieczności pisania dużych ilości własnego CSS. Możesz skorzystać z gotowych komponentów i klas CSS oferowanych przez Bootstrap, aby poprawić wygląd i użyteczność generowanej strony.

Przykładowy skrypt

Prezentowanym przykładem jest skrypt PowerShell, który tworzy stronę internetową zawierającą podstawowe informacje o komputerze. Pobiera on informacje o komputerze, takie jak nazwa komputera, adres MAC, adres IP, nazwa i wersja systemu operacyjnego, procesor, pamięć RAM oraz karta graficzna, a następnie konwertuje te dane do HTML z użyciem Bootstrap CSS.

Do wykonania niektórych poleceń może być potrzebne uruchomienie PowerShell jako administrator. Ponadto niektóre z tych poleceń mogą wymagać odpowiednich uprawnień i dostępu do sieci w przypadku pobierania danych ze zdalnych lokalizacji.

# Bootstrap CSS link
$bootstrapCss = "<link rel='stylesheet' href='https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css'>"

# Pobieranie informacji o systemie
$komputer = $env:COMPUTERNAME
$ip = Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.InterfaceAlias -ne "Loopback Pseudo-Interface" } | Select-Object -First 1 -ExpandProperty IPAddress
$mac = Get-NetAdapter | Select-Object -First 1 -ExpandProperty MacAddress
$os = Get-WmiObject -Class Win32_OperatingSystem | Select-Object -ExpandProperty Caption
$osVersion = [Environment]::OSVersion.Version
$procesor = Get-WmiObject -Class Win32_Processor | Select-Object -First 1 -ExpandProperty Name
$ram = Get-WmiObject -Class Win32_ComputerSystem | Select-Object -First 1 -ExpandProperty TotalPhysicalMemory
$ramGB = [Math]::Round($ram / 1Gb, 2)
$kartaGraficzna = Get-WmiObject -Class Win32_VideoController | Select-Object -First 1 -ExpandProperty Name

# Tworzenie HTML
$htmlContent = @"
<!DOCTYPE html>
<html>
<head>
    $bootstrapCss
    <title>Informacje o komputerze</title>
</head>
<body>
    <div class="container">
        <h1>Informacje o komputerze</h1>
        <table class="table table-striped">
            <tr><th>Nazwa komputera</th><td>$komputer</td></tr>
            <tr><th>Adres IP</th><td>$ip</td></tr>
            <tr><th>Adres MAC</th><td>$mac</td></tr>
            <tr><th>System operacyjny</th><td>$os</td></tr>
            <tr><th>Wersja systemu</th><td>$osVersion</td></tr>
            <tr><th>Procesor</th><td>$procesor</td></tr>
            <tr><th>Pamięć RAM (GB)</th><td>$ramGB</td></tr>
            <tr><th>Karta graficzna</th><td>$kartaGraficzna</td></tr>
        </table>
    </div>
</body>
</html>
"@

# Zapis do pliku HTML
Out-File -FilePath "informacjeOKomputerze.html" -Encoding UTF8 -InputObject $htmlContent

# Opcjonalnie: Otwarcie pliku w przeglądarce
Start-Process "informacjeOKomputerze.html"

Ten skrypt PowerShell wykonuje następujące zadania:

  1. Linkuje Bootstrap CSS za pomocą tagu <link>.
  2. Pobiera informacje o komputerze, takie jak nazwa komputera, adres IP, adres MAC, system operacyjny, wersja systemu operacyjnego, procesor, pamięć RAM i karta graficzna.
  3. Przekształca uzyskane dane na HTML, wykorzystując Bootstrap do stylizacji tabeli.
  4. Zapisuje HTML do pliku i opcjonalnie otwiera go w przeglądarce.

Trzy miesiące temu na naszej stronie…

Artykuł: Pierwszy skrypt bash

Pierwszy skrypt bash

Artykuł: Harmonogram egzaminów maturalnych

Harmonogram egzaminów maturalnych

Artykuł: Staże w Hiszpanii

Staże w Hiszpanii

Artykuł: Conformité Européenne

Conformité Européenne

Artykuł: Display Stream Compression

Display Stream Compression

Artykuł: High Dynamic Range

High Dynamic Range

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły