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
i -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ć.
- Znajdź URL do CDN (Content Delivery Network) dla Bootstrap. Na przykład, link do Bootstrap z oficjalnej strony Bootstrap.
- 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:
- Linkuje Bootstrap CSS za pomocą tagu
<link>
. - Pobiera informacje o komputerze, takie jak nazwa komputera, adres IP, adres MAC, system operacyjny, wersja systemu operacyjnego, procesor, pamięć RAM i karta graficzna.
- Przekształca uzyskane dane na HTML, wykorzystując Bootstrap do stylizacji tabeli.
- Zapisuje HTML do pliku i opcjonalnie otwiera go w przeglądarce.