お使いのコンピューターシステムのシステム情報レポートを作成するのに苦労したことはありますか? システムの詳細を収集することは難しく思えるかもしれませんが、Microsoft System Information Tool(MSInfo32)はその情報をすべて収集するのに便利です!
この記事では、システム情報レポートの生成と表示を短時間でマスターします。詳細を知りたい場合は、続けて読んでください。
前提条件
このチュートリアルでは、Windows 10のどのビルドでも使用できます。コマンドラインからシステムレポートを読み取るには、PowerShellが必要です。このチュートリアルでは、Windows 10バージョン21H1ビルド19043とPowerShell v7.1を使用しています。
システム情報レポートの表示
システムの詳細情報を取得する最初のステップは、MSInfo32ツールを開くことです。
ツールを見つけるには、スタートメニューでMSInfo32を検索し、管理者として実行オプションをクリックしてください。
MSInfo32を管理者として実行しないと、MSInfo32は内部情報キャッシュを正しく更新できず、一部のドライバーが停止したと表示される場合があります。
ツールが開くとすぐに、自動的に生成されたレポートが表示されます。システムのハードウェアの概要がシステムの概要ビューで表示されます。このビューでは、システム構成の全体像が概説されています。左側には、各セクションをさらに細分化するカテゴリが表示されます。

MSInfo32レポートの保存
おそらく、システムにハードウェアの変更を加える予定であり、後で比較や報告のためにシステム情報レポートを保存したいと考えているのでしょう。MSInfo32を使用すると、その情報を保存するための2つのオプションがあります:保存とエクスポート。次にそれらについて学びます。
[ファイル]→[保存]をクリックして、情報をNFOファイルとして保存することができます。これはシステム情報ファイルとして知られています。 NFOファイルはXMLベースのファイルであり、後でMSInfo32ツールで同じ整理された形式で表示することができます。

以下にNFO XMLファイルの例を示します。
[ファイル]→[エクスポート]をクリックして、情報をTXTプレーンテキストファイルとして保存することもできますが、これは読みやすいかもしれませんが、後でシステム情報ツールで開くことはできません。

以下に、MSInfo32がエクスポートするテキストファイル形式の例を示します。
MSInfo32からエクスポートされたレポートのスクリプト化
MSInfo32からシステム情報レポートを生成する方法を知ったので、コマンドラインからNFOまたはTXTレポートを生成するにはどうすればよいですか?おそらくスクリプトを作成しており、ハードウェア情報を迅速に取得する必要があると考えているのでしょう。
以下に、コマンドラインを使用してNFOおよびTXTレポートの両方を生成するための2つの異なるオプションがあります。
古い記事では、MSInfo32に関する多くの古い記事があり、その中には
/categories
、/category
、/pch
、/showcategories
などのオプションが表示されることがあります。これらはWindows XPでのみ利用可能であり、Windows 10では利用できません。
最初の例では、コマンドを実行する同じディレクトリにTXTレポートを生成する方法を示しています。次のスクリーンショットで確認できるように。
コマンドラインから実行しても、レポート生成前にシステム情報が更新されるウィンドウが表示されます。

2番目の例では、レポートが保存されるディレクトリを指定してNFOレポートを生成する方法を示しています。コマンドを実行する前にディレクトリが存在している必要があることに注意してください。そうでない場合、コマンドは静かに失敗します。
システム情報レポートのエクスポートがNFOファイルであるため、任意のファイル拡張子が機能しますが、/nfo
オプション、規約により、レポート拡張子として.nfoを使用することが推奨されています。
PowerShellを介してNFOファイルを読み取る
このチュートリアル全体で、MSInfo32レポートの生成とエクスポート方法を学びました。しかし、Adam the Automatorに来た理由はあるはずですので、プロセスを自動化する方法を学ぶことになります。
保存されたNFOレポートは、MSInfo32でファイル → 開くメニューから開いて表示することができます。問題は、情報の取得を自動化する際には、グラフィカルインターフェースが理想的ではないことです。NFOファイルはXMLファイルとして保存されているため、PowerShellはXMLファイルを解析してその情報を取得できます。
XMLレポートファイルを読むには、PowerShellウィンドウを開いて、Get-Content
を実行します。以下のスクリーンショットに示すように、[XML]
を使用すると、PowerShellがXMLテキストを読み取り、PowerShellオブジェクトに変換できます。最後に、結果を$Report
変数に保存します。結果のコマンドは以下の通りです。

$Report
variable. おそらく、レポートが生成された時点で実行されていたサービスのリストを取得する必要があります。MSInfo32レポートにはそれが含まれているため、SelectNodes()
メソッドを使用してリストを取得します。
SelectNodes()
メソッドはXPathを使用します。XPathはXMLのクエリ言語です。複雑なXPathクエリの作成は、この記事の対象外です。
XPathクエリ'//Category[@name="Software Environment"]/Category[@name="Services"]/Data'
は例として機能します。その部分は以下に示されているので、理解して複数のシナリオに適応させることができます。
//Category[@name="Software Environment"]
– 全文書内の名前が「Software Environment」である任意のCategoryノードを返します。/Category[@name="Services"]
– 以前に返された「Software Environment」ノードの下にある名前が「Services」であるCategoryノードを返します。/データ
– 以前に返された「サービス」ノードの子データノードを返します。
上記の例の構造は、MSInfo32が実行されるときに表示される自動生成されたシステムレポートを示しています。これを、表示されるセクションに従って構築して適応することができます。

以下に、XPathクエリとPowerShellを使用してシステムレポートのディスプレイカテゴリに関する情報を見つける方法の追加の例が示されています。XPathクエリ自体は以前のものと非常に似ていますが、今回はコンポーネントと表示カテゴリを探しています。

結論
この記事では、MSInfo32がローカルシステムの包括的なシステムレポートを生成する便利な方法を学びました。MSInfo32の保存およびエクスポート機能を使用して、システムの状態を時間をかけて分析し、PowerShellを使用して利用可能な情報を分析する方法を学びました。
複数のシステムでMSInfo32を自動化する方法はありますか?