PowerShell&CSSで見事なHTMLレポートを作成する方法

PowerShellは、面倒で繰り返しの多いタスクを簡素化し自動化するのに役立つ強力なツールです。管理者は通常、データセットがレポートとして表示される必要がある場合に、システムやデータベースから情報を抽出するためにPowerShellを使用します。しかし、テキストやCSVファイルのレポートは通常、HTMLの豪華なスタイリングに欠けています。このチュートリアルでは、PowerShellを使用してHTMLレポートを作成する方法を学びます。

PowerShellを使用すると、他の平凡な形式から離れて、HTMLレポートを作成することができます。単にPowerShellだけを使って、システムから抽出した生データの意味のあるプレゼンテーションを作成することができます。さらに、カスケーディングスタイルシート(CSS)を適用することで、レポートのレイアウトを簡単にカスタマイズすることもできます。

この記事では、ConvertTo-HTMLコマンドレットとOut-fileコマンドレットを組み合わせてHTMLレポートを生成する方法を学びます。また、CSSの基本的なスクリプトと、HTMLベースのレポートのデザインのフォーマットに役立つ方法も学びます。

前提条件

この記事は、手順を追うつもりである場合、事前に以下の前提条件を設定しておいてください。

  • すべての例はWindows 10 Build 1709を使用して表示されますが、このバージョンは必須ではありません。
  • Windows PowerShell 5.1以降のバージョンまたはPowerShell Core 7
  • Internet ExplorerまたはGoogle Chromeなどのブラウザ

ConvertTo-Htmlを使用して基本的なコンピュータ情報レポートを作成します。

ConvertTo-Htmlコマンドレットとそのパラメータを使用する方法を示すために、マシンの基本情報(オペレーティングシステム、プロセッサ、BIOS、および利用可能なディスク容量など)を取得し、その情報をHTMLレポートに生成するスクリプトを作成します。

まず、マシンからオペレーティングシステムバージョンの情報を収集するコマンドから始めます。PowerShellコンソールを開き、以下のコマンドをコピーして貼り付け、Enterキーを押してコマンドを実行します。

Get-CimInstance -Class Win32_OperatingSystem | Select-object Version,Caption,BuildNumber,Manufacturer

上記のコマンドを実行すると、Get-CimInstanceコマンドレットがWin32_OperatingSystemクラスのプロパティを収集し、マシンのオペレーティングシステムに関する情報を含む結果が返されます。結果は以下のスクリーンショットに似ているはずです。

Machine’s Operating System Information

オペレーティングシステムの情報を返すコマンドを取得したので、次はその結果をHTMLコードに変換しましょう。上記のコマンドの結果(オブジェクト)をHTMLコードに変換するには、Get-CimInstanceコマンドレットの出力をConvertTo-Htmlにパイプで渡すことができます。PowerShellコンソールで以下のコマンドを実行します。

Get-CimInstance -Class Win32_OperatingSystem | Select-object Version,Caption,BuildNumber,Manufacturer |  ConvertTo-Html

以下のスクリーンショットで、PowerShellがGet-CimInstanceコマンドレットの出力から自動的にHTMLタグを生成しているのが見えます。結果はテーブル形式で表示され、テーブルのヘッダーにはバージョンキャプションビルド番号メーカーなどのプロパティ名が表示されます。各テーブル行はオブジェクトを表し、各プロパティのオブジェクトの値が表示されます。

Generated HTML code

レポートをHTMLファイルにエクスポート

結果を取得してHTMLコードに変換したので、Out-fileコマンドレットを使用してレポートをHTMLファイルにエクスポートし、ウェブブラウザでレポートを表示しましょう。ConvertTo-Htmlコマンドレットの出力をパイプで渡し、-FilePathパラメータを使用してレポートを保存するパスを指定し、ファイル名にはBasic-Computer-Information-Report.htmlを使用します。

PowerShell ISEまたは任意のテキストエディタを開き、以下のコードをコピーしてスクリプトをGenerate-HTML-Report.Ps1というファイル名で保存します。

Get-CimInstance -Class Win32_OperatingSystem | Select-object Version,Caption,BuildNumber,Manufacturer | ConvertTo-Html | Out-File -FilePath .\Basic-Computer-Information-Report.html

PowerShellコンソールでGenerate-HTML-Report.Ps1スクリプトを実行します。

.\Generate-HTML-Report.Ps1

スクリプトを実行した後、ウェブブラウザでBasic-Computer-Information-Report.htmlファイルを開きます。ウェブブラウザはHTMLレポートのコードを解釈し、データをブラウザ画面に表示します。レポートには、以下のスクリーンショットに似たマシンのオペレーティングシステムに関する情報が含まれているはずです。

HTML report viewed in a web browser

Fragmentパラメータを使用してレポートを結合する

この時点で、マシンのオペレーティングシステムの情報を取得し、結果をHTMLレポートにエクスポートするスクリプトができました。目標は、プロセッサ、BIOS、ディスク、およびサービスなど、コンピュータの残りの情報を取得するためにスクリプトにさらにコマンドを追加することです。

各コマンドは、HTMLコードとしてフォーマットされた異なるコンピュータ情報を返します。すべての情報を1つのHTMLレポートに適切に統合するために、ConvertTo-Htmlコマンドレットで生成されるHTMLコードのテーブル部分のみを取得するために、Fragmentパラメータを使用してください。

以下のスクリーンショットで確認できるように、PowerShellはConvertTo-Htmlコマンドレットに出力がパイプされると、すべての基本的なHTML要素を生成します。

List of generated HTML code using ConvertTo-Html cmdlet

Fragmentパラメータを使用すると、PowerShellはHTMLのテーブル要素のみを生成します。要素<HTML><HEAD><TITLE><BODY>などは省略されます。結果は以下に示されています。

List of HTML code for table using Fragment parameter

上記の例からFragmentパラメータの動作方法をすでに知っているので、それをスクリプトに適用しましょう。

以下のスクリプトのコマンドは、次の操作を実行します:

  • 最初の5行のコマンドは、オペレーティングシステム、プロセッサ、BIOS、ディスク、およびサービスなど、マシンからさまざまな情報を取得します。
  • -Propertyパラメータを使用して結果をフィルタリングし、関連する値のみを表示します。
  • 各情報は-Fragmentを使用してテーブルとしてフォーマットされます。
  • -Bodyパラメータを使用してHTMLテーブルを統合し、単一のHTMLレポートにする
  • -Titleパラメータを使用してレポートのタイトルを「コンピュータ情報レポート」とする
  • Out-fileパラメータを使用してレポートをHTMLファイルとしてエクスポートする

以下のコードを使用してスクリプトの追加情報を更新する。

#以下のコマンドはオペレーティングシステム情報を取得し、結果をHTMLコードとしてテーブルに変換して変数に保存します。
$OSinfo = Get-CimInstance -Class Win32_OperatingSystem | ConvertTo-Html -Property Version,Caption,BuildNumber,Manufacturer -Fragment

#以下のコマンドはプロセッサ情報を取得し、結果をHTMLコードとしてテーブルに変換して変数に保存します。
$ProcessInfo = Get-CimInstance -ClassName Win32_Processor | ConvertTo-Html -Property DeviceID,Name,Caption,MaxClockSpeed,SocketDesignation,Manufacturer -Fragment

#以下のコマンドはBIOS情報を取得し、結果をHTMLコードとしてテーブルに変換して変数に保存します。
$BiosInfo = Get-CimInstance -ClassName Win32_BIOS | ConvertTo-Html -Property SMBIOSBIOSVersion,Manufacturer,Name,SerialNumber -Fragment

#以下のコマンドはディスクの詳細情報を取得し、結果をHTMLコードとしてテーブルに変換して変数に保存します。
$DiscInfo = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | ConvertTo-Html -Property DeviceID,DriveType,ProviderName,VolumeName,Size,FreeSpace -Fragment

#以下のコマンドは最初の10個のサービス情報を取得し、結果をHTMLコードとしてテーブルに変換して変数に保存します。
$ServicesInfo = Get-CimInstance -ClassName Win32_Service | Select-Object -First 10  |ConvertTo-Html -Property Name,DisplayName,State -Fragment
 
#以下のコマンドは収集したすべての情報を単一のHTMLレポートに結合します。
$Report = ConvertTo-HTML -Body "$ComputerName $OSinfo $ProcessInfo $BiosInfo $DiscInfo $ServicesInfo" -Title "Computer Information Report" 

#以下のコマンドはレポートをHTMLファイルに生成します。
$Report | Out-File .\Basic-Computer-Information-Report.html

PowerShellコンソールでスクリプトを実行します。以下のようにレポートの出力が表示されます。

HTML report with basic computer information

PreContentPostContentパラメータを使用してラベルを追加する

この時点で、スクリプトはコンピュータの基本情報をすべて取得し、結果をHTMLにエクスポートすることができます。しかし、上のスクリーンショットで見るように、注釈を削除すると、情報が適切にラベル付けされていないため、誰かまたはレポートの受信者がコンテンツを理解するのに困難を感じるかもしれません。

PreContentパラメータとPostContentパラメータを使用すると、各テーブルにラベルを追加して、誰でも簡単にレポートのコンテンツを識別できます。

PreContentパラメータは、開始の<TABLE>タグの前に追加するテキストを指定し、PostContentパラメータは終了の</TABLE>タグの後に追加するテキストを指定します。これらのパラメータに追加される値は自動的にHTMLコードに変換されないため、明示的にHTMLタグを使用して正しくHTML要素としてレンダリングする必要があります。

以下のコマンドを使用してスクリプトを更新し、PowerShellコンソールでスクリプトを実行します。

スクリプトの変更点は以下の通りです:

  • コンピュータの名前を取得するための新しいコマンドが追加されました。変数$ComputerNameの値に<h1>タグが追加され、ブラウザで表示されるときにテキストの形式が見出しに変更されます。
  • PreContentパラメータを使用して各テーブルに異なるラベルが追加され、値は<h2>タグに配置されます。
  • PostContentパラメータを使用してレポートの最後に作成日ラベルが追加され、値は<p>タグに配置されます。
#以下のコマンドは、コンピュータの名前を取得します
$ComputerName = "<h1>Computer name: $env:computername</h1>"

#以下のコマンドは、オペレーティングシステムの情報を取得し、結果をHTMLコードとしてテーブルに変換し、変数に格納します
$OSinfo = Get-CimInstance -Class Win32_OperatingSystem | ConvertTo-Html -Property Version,Caption,BuildNumber,Manufacturer -Fragment -PreContent "<h2>Operating System Information</h2>"

#以下のコマンドは、プロセッサの情報を取得し、結果をHTMLコードとしてテーブルに変換し、変数に格納します
$ProcessInfo = Get-CimInstance -ClassName Win32_Processor | ConvertTo-Html -Property DeviceID,Name,Caption,MaxClockSpeed,SocketDesignation,Manufacturer -Fragment -PreContent "<h2>Processor Information</h2>"

#以下のコマンドは、BIOSの情報を取得し、結果をHTMLコードとしてテーブルに変換し、変数に格納します
$BiosInfo = Get-CimInstance -ClassName Win32_BIOS | ConvertTo-Html -Property SMBIOSBIOSVersion,Manufacturer,Name,SerialNumber -Fragment -PreContent "<h2>BIOS Information</h2>"

#以下のコマンドは、ディスクの詳細情報を取得し、結果をHTMLコードとしてテーブルに変換し、変数に格納します
$DiscInfo = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | ConvertTo-Html -Property DeviceID,DriveType,ProviderName,VolumeName,Size,FreeSpace -Fragment -PreContent "<h2>Disk Information</h2>"

#以下のコマンドは、最初の10個のサービス情報を取得し、結果をHTMLコードとしてテーブルに変換し、変数に格納します
$ServicesInfo = Get-CimInstance -ClassName Win32_Service | Select-Object -First 10  | ConvertTo-Html -Property Name,DisplayName,State -Fragment -PreContent "<h2>Services Information</h2>"

#以下のコマンドは、収集したすべての情報を1つのHTMLレポートに結合します
$Report = ConvertTo-HTML -Body "$ComputerName $OSinfo $ProcessInfo $BiosInfo $DiscInfo $ServicesInfo" -Title "Computer Information Report" -PostContent "<p>Creation Date: $(Get-Date)<p>"

#以下のコマンドは、レポートをHTMLファイルに生成します
$Report | Out-File .\Basic-Computer-Information-Report.html

少しの追加作業で、レポートはずっと見栄えが良くなります。以下のようにレポートを更新してください。

HTML report added with labels using PreContent and PostContent Parameters

Asパラメータを使用してテーブルレイアウトを変更する

おそらく、生成されたHTMLテーブルには複数の列があり、値をリストとして適切に表示するためにフォーマットを変更したい場合、Asパラメータを使用することができます。デフォルトでは、出力をConvertTo-htmlにパイプすると、PowerShellはWindows PowerShellのテーブル形式に似たHTMLテーブルを生成します。

以下のスクリーンショットで見るように、テーブルのヘッダにはVersionCaptionBuild NumberManufacturerなどのプロパティ名が表示され、各テーブル行はオブジェクトを表し、各プロパティの値を表示します。

HTML code generated by ConvertTo-Html cmdlet formatted as Table

テーブルのレイアウトをリストに変更するには、パラメータ-Asを使用し、その後にListを指定します。PowerShellは、Windows PowerShellのリスト形式に似た2列のHTMLテーブルを各オブジェクトに対して生成します。最初の列にはVersionCaptionBuild NumberManufacturerなどのプロパティ名が表示され、2番目の列にはプロパティの値が表示されます。

HTML code generated by ConvertTo-Html cmdlet formatted as List

上記の例から、テーブルのレイアウトを変更する方法がわかりましたので、スクリプトにAsパラメータを適用して、オペレーティングシステム、プロセッサ、BIOS、ディスク情報のテーブルのレイアウトをリスト形式に変更しましょう。

以下のコードでスクリプトを更新してください。スクリプトには、オペレーティングシステム、プロセッサ、BIOS、ディスクのコマンドラインに-Asパラメータが含まれています。

#以下のコマンドはコンピューターの名前を取得します
$ComputerName = "<h1>Computer name: $env:computername</h1>"

#以下のコマンドはオペレーティングシステムの情報を取得し、結果をHTMLコードとしてテーブルに変換して変数に保存します
$OSinfo = Get-CimInstance -Class Win32_OperatingSystem | ConvertTo-Html -As List -Property Version,Caption,BuildNumber,Manufacturer -Fragment -PreContent "<h2>Operating System Information</h2>"

#以下のコマンドはプロセッサの情報を取得し、結果をHTMLコードとしてテーブルに変換して変数に保存します
$ProcessInfo = Get-CimInstance -ClassName Win32_Processor | ConvertTo-Html -As List -Property DeviceID,Name,Caption,MaxClockSpeed,SocketDesignation,Manufacturer -Fragment -PreContent "<h2>Processor Information</h2>"

#以下のコマンドはBIOSの情報を取得し、結果をHTMLコードとしてテーブルに変換して変数に保存します
$BiosInfo = Get-CimInstance -ClassName Win32_BIOS | ConvertTo-Html -As List -Property SMBIOSBIOSVersion,Manufacturer,Name,SerialNumber -Fragment -PreContent "<h2>BIOS Information</h2>"

#以下のコマンドはディスクの詳細情報を取得し、結果をHTMLコードとしてテーブルに変換して変数に保存します
$DiscInfo = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | ConvertTo-Html -As List -Property DeviceID,DriveType,ProviderName,VolumeName,Size,FreeSpace -Fragment -PreContent "<h2>Disk Information</h2>"

#以下のコマンドは最初の10個のサービスの情報を取得し、結果をHTMLコードとしてテーブルに変換して変数に保存します
$ServicesInfo = Get-CimInstance -ClassName Win32_Service | Select-Object -First 10  |ConvertTo-Html -Property Name,DisplayName,State -Fragment -PreContent "<h2>Services Information</h2>"
  
#以下のコマンドは収集した情報を単一のHTMLレポートに結合します
$Report = ConvertTo-HTML -Body "$ComputerName $OSinfo $ProcessInfo $BiosInfo $DiscInfo $ServicesInfo" -Title "Computer Information Report" -PostContent "<p>Creation Date: $(Get-Date)<p>"

#以下のコマンドはレポートをHTMLファイルに生成します
$Report | Out-File .\Basic-Computer-Information-Report.html

コードに-Asパラメータを適用した後、レポートは以下のように更新されます。オペレーティングシステム、プロセッサ、BIOS、およびディスク情報のテーブルレイアウトはリストに変更されました。

HTML report with tables formatted as List

CSSを使用してレポートを強化

レポートを次のレベルに引き上げ、CSSを使用してデザインを追加しましょう。CSSは、HTMLレポートがウェブブラウザでどのように表示されるかを制御するために使用されます。CSSはフォント、テキスト、色、背景、余白、レイアウトを制御します。このセクションの終わりには、CSSを使用してレポートがプレーンからリッチな形式に変換される様子を見ることができるはずです。

CSSをHTMLに適用する方法には、インライン、内部、外部の3つの方法があります。この記事では、HTMLレポートでHeaderパラメータを使用して内部方法を適用します。

Headerパラメータは、<HEAD>タグの内容を指定します。 <HEAD>タグは、CSSのコードを配置するHTMLの構造の一部です。以下のスクリーンショットで示すように、<head>タグは、ConvertTo-Html cmdletによって生成されるHTMLコードにすでに含まれています。

HTML code showing the Head element

では、CSSを使用してHTMLレポートの書式を指定しましょう。最初に、以下のコードをコピーしてスクリプトの先頭に貼り付けます。 $header変数に割り当てられたCSSコードは、レポート内の<h1>タグ内に配置されたテキストの書式を変更します。

$header = @"
<style>

    h1 {

        font-family: Arial, Helvetica, sans-serif;
        color: #e68a00;
        font-size: 28px;

    } 
</style>

@”

次に、Headerパラメータを使用して$header変数を割り当てます。以下のコードを使用してスクリプトを更新します。

$Report = ConvertTo-HTML -Body "$ComputerName $OSinfo $ProcessInfo $BiosInfo $DiscInfo $ServicesInfo" `
-Title "Computer Information" -Head $header -PostContent "<p>Creation Date: $(Get-Date)<p>"

スクリプトを実行すると、レポートが以下のように更新されるはずです。影響を受けるHTML要素は<h1>のみであり、これは「コンピュータ名」ラベルに適用されていることに注意してください。上記の手順は、CSSを使用してHTMLレポートのデザインを制御または操作する方法の素晴らしい例です。

HTML report with CSS using Head Parameter

他のテーブルやラベルにデザインを追加するためには、レポート内の<h2>タグに配置されたものに対して、以下のCSSコードを使用して$header変数を更新し続けてください。

$header = @"
<style>

    h1 {

        font-family: Arial, Helvetica, sans-serif;
        color: #e68a00;
        font-size: 28px;

    }

    
    h2 {

        font-family: Arial, Helvetica, sans-serif;
        color: #000099;
        font-size: 16px;

    }

    
    
   table {
		font-size: 12px;
		border: 0px; 
		font-family: Arial, Helvetica, sans-serif;
	} 
	
    td {
		padding: 4px;
		margin: 0px;
		border: 0;
	}
	
    th {
        background: #395870;
        background: linear-gradient(#49708f, #293f50);
        color: #fff;
        font-size: 11px;
        text-transform: uppercase;
        padding: 10px 15px;
        vertical-align: middle;
	}

    tbody tr:nth-child(even) {
        background: #f0f0f2;
    }

        #CreationDate {

        font-family: Arial, Helvetica, sans-serif;
        color: #ff3300;
        font-size: 12px;

    }
    



</style>
"@

#CreationDate {

HTML report formatted using CSS

スクリプトを更新して実行すると、レポートは以下のようにフォーマットされます。CSSのおかげで、視覚的に魅力的でプロフェッショナルな外観になります。

CSSでHTMLのIDとクラス属性を使用する

HTML要素は、HTMLレポート全体の構成要素であり、CSSはこれらの要素をセレクタとして使用して、スタイルを適用する場所を知ります。前の例では、CSSコードがレポートのHTML要素h1h2、およびtableに適用されました。しかし、異なる要素に異なるスタイルを適用する必要がある場合はどうでしょうか?そこで、idとclass属性が登場します。HTMLレポートの設計では、単一の要素を定義するためにidまたはclassのいずれかを使用することができます。

HTML要素は、その単一の要素に属する一意のidを1つだけ持つことができますが、クラス名は複数の要素で使用することができます。ウェブ開発者にとって、これらの属性はページのデザインだけでなく、主にスクリプトで使用され、ページが各イベントやリクエストにどのように応答するかを制御するために使用されます。

-PostContent "<p>Creation Date: $(Get-Date)</p>"

HTMLレポートでidとclass属性を適用してみましょう。以下のコードスニペットでは、作成日のラベルが<p>タグに配置されていることがわかります。

HTML report showing the creation date label

レポートが生成され、ブラウザで表示されると、作成日のラベルが以下のようにフォーマットされます。

-PostContent "<p id='CreationDate'>Creation Date: $(Get-Date)</p>"

作成日ラベルのフォーマットにid属性を使用するには、まず、<p>タグに’id’属性名を’CreationDate‘として割り当てます。id名は開始タグの内側に配置する必要があります。更新されたコードは以下の通りです。

#CreationDate {
    font-family: Arial, Helvetica, sans-serif;
    color: #ff3300;
    font-size: 12px;
}

次に、作成日ラベルのフォーマットのための新しいCSSコードを作成します。CSSでIDを宣言する際には、’#’シンボルに続けてID名を使用します。以下のCSSコードを$header変数に追加し、スクリプトをPowerShellコンソールで保存して実行します。

HTML report showing creation date label formatted using CSS via ID as selector

id属性を割り当てて<p>タグのid属性を対象とする新しいCSSコードを作成した後、レポートは以下のように更新されるはずです。

HTML report showing the Services Information table

サービス情報テーブルにclass属性を適用しましょう。CSSを使用して、状態の値がRunningの場合はテキストの色を緑に、Stoppedの場合は赤に変更します。

$ServicesInfo = Get-CimInstance -ClassName Win32_Service | Select-Object -First 10  | ConvertTo-Html -Property Name,DisplayName,State -Fragment -PreContent "<h2>Services Information</h2>"
$ServicesInfo = $ServicesInfo -replace '<td>Running</td>','<td class="RunningStatus">Running</td>' 
$ServicesInfo = $ServicesInfo -replace '<td>Stopped</td>','<td class="StopStatus">Stopped</td>'

先ほど述べたように、class属性は複数のHTML要素に割り当てることができます。HTMLレポートでは、RunningStoppedのテキストを保持する要素は<td>タグです。PowerShellの-Replaceメソッドを使用して、Services informationテーブル内のすべての<td>タグにクラス名RunningStatusStopStatusを割り当てます。以下のコマンドを使用してスクリプトを更新します。

.RunningStatus {
    color: #008000;
}

.StopStatus {
    color: #ff0000;
}

以下のCSSコードを$header変数の下に追加してください。クラス名がRunningStatusのすべての<td>タグの16進数値は#008000(緑色に相当)になります。また、クラス名がStopStatusのすべての<td>タグの16進数値は#ff0000(赤色に相当)になります。

HTML report showing the Services Information table formatted using CSS via class selector

スクリプトを保存して実行してください。レポートのサービス情報テーブルは以下のように更新されるはずです。

Final layout of HTML report

以下はCSSを使用してフォーマットされたHTMLレポートの最終レイアウトです。

Generate-HTML-Report.Ps1の完全なコマンドは以下の通りです。
$header = @"
<style>

    h1 {

        font-family: Arial, Helvetica, sans-serif;
        color: #e68a00;
        font-size: 28px;

    }

    
    h2 {

        font-family: Arial, Helvetica, sans-serif;
        color: #000099;
        font-size: 16px;

    }

    
    
   table {
		font-size: 12px;
		border: 0px; 
		font-family: Arial, Helvetica, sans-serif;
	} 
	
    td {
		padding: 4px;
		margin: 0px;
		border: 0;
	}
	
    th {
        background: #395870;
        background: linear-gradient(#49708f, #293f50);
        color: #fff;
        font-size: 11px;
        text-transform: uppercase;
        padding: 10px 15px;
        vertical-align: middle;
	}

    tbody tr:nth-child(even) {
        background: #f0f0f2;
    }
    


    #CreationDate {

        font-family: Arial, Helvetica, sans-serif;
        color: #ff3300;
        font-size: 12px;

    }



    .StopStatus {

        color: #ff0000;
    }
    
  
    .RunningStatus {

        color: #008000;
    }




</style>
"@

#CSSコード
$ComputerName = "<h1>Computer name: $env:computername</h1>"

#以下のコマンドはコンピューターの名前を取得します
$OSinfo = Get-CimInstance -Class Win32_OperatingSystem | ConvertTo-Html -As List -Property Version,Caption,BuildNumber,Manufacturer -Fragment -PreContent "<h2>Operating System Information</h2>"

#以下のコマンドはオペレーティングシステムの情報を取得し、結果をHTMLコードとしてテーブル形式に変換し、変数に格納します
$ProcessInfo = Get-CimInstance -ClassName Win32_Processor | ConvertTo-Html -As List -Property DeviceID,Name,Caption,MaxClockSpeed,SocketDesignation,Manufacturer -Fragment -PreContent "<h2>Processor Information</h2>"

#以下のコマンドはプロセッサーの情報を取得し、結果をHTMLコードとしてテーブル形式に変換し、変数に格納します
$BiosInfo = Get-CimInstance -ClassName Win32_BIOS | ConvertTo-Html -As List -Property SMBIOSBIOSVersion,Manufacturer,Name,SerialNumber -Fragment -PreContent "<h2>BIOS Information</h2>"

#以下のコマンドはBIOSの情報を取得し、結果をHTMLコードとしてテーブル形式に変換し、変数に格納します
$DiscInfo = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | ConvertTo-Html -As List -Property DeviceID,DriveType,ProviderName,VolumeName,Size,FreeSpace -Fragment -PreContent "<h2>Disk Information</h2>"

#以下のコマンドはディスクの詳細情報を取得し、結果をHTMLコードとしてテーブル形式に変換し、変数に格納します
$ServicesInfo = Get-CimInstance -ClassName Win32_Service | Select-Object -First 10  |ConvertTo-Html -Property Name,DisplayName,State -Fragment -PreContent "<h2>Services Information</h2>"
$ServicesInfo = $ServicesInfo -replace '<td>Running</td>','<td class="RunningStatus">Running</td>'
$ServicesInfo = $ServicesInfo -replace '<td>Stopped</td>','<td class="StopStatus">Stopped</td>'

  
#以下のコマンドは最初の10個のサービスの情報を取得し、結果をHTMLコードとしてテーブル形式に変換し、変数に格納します
$Report = ConvertTo-HTML -Body "$ComputerName $OSinfo $ProcessInfo $BiosInfo $DiscInfo $ServicesInfo" -Head $header -Title "Computer Information Report" -PostContent "<p id='CreationDate'>Creation Date: $(Get-Date)</p>"

#以下のコマンドは収集したすべての情報を1つのHTMLレポートに結合します
$Report | Out-File .\Basic-Computer-Information-Report.html

#以下のコマンドはレポートをHTMLファイルに生成します

結論

この記事では、オブジェクト(結果)をHTMLコードに変換し、HTMLレポートに生成する方法を学びました。

I hope this article gives you enough ideas on how you can create and improve your HTML report. Cheers!

HTML形式でレポートを生成することで、レポートをより簡単に強化・操作できるようにするためのCSSを適用することができます。HTMLコーディングとCSSデザインのスキルを向上させるために、無料のオンラインリソースがたくさんあります。

Source:
https://adamtheautomator.com/html-report/