この投稿は PowerShell Advent Calandar 2011 の15日目の記事です。
前回の投稿 PowerShell でインストール済みのソフトウェアを調査する では、Windows にインストールされているソフトウェアのリストを PowerShell を利用して CSV 形式のファイルへ出力をしました。
今回は、処理の結果を Office Open XML 形式のドキュメントに出力する方法を紹介します。
準備
PowerTools for Open XML を利用すると、Open XML 形式のドキュメントを PowerShell から簡単に扱うことができます。
PowerTools for Open XML は .NET のソースコードとして配布されるため、バイナリーを得るために各自でコンパイルを行う必要があります。
- Open XML SDK 2.0 for Microsoft Office をインストール
PowerTools for Open XML は Open XML SDK 2.0 をベースに構築されるため、予めこの SDK をインストールしておく必要があります。 - PowerTools for Open XML をダウンロード
- PowerTools for Open XML をコンパイル
- System32\WindowsPowerShell\v1.0\Modules フォルダーに “OpenXmlPowerTools” フォルダーを作成

- コンパイルして出来上がった “OpenXmlPowerTools.dll” と “OpenXmlPowerTools.dll-Help.xml” を 4. で作成した “OpenXmlPowerTools” フォルダーにコピー

- (これが初めての外部コマンドレットの実行であれば)PowerTools for Open XML が提供するコマンドレットの実行を許可するよう Set-ExecutionPolicy Unrestricted を実行

- PowerTools for Open XML のモジュールをロードするため Import-Module OpenXmlPowerTools を実行

コード例
Get-WmiObject -Class Win32_product –ComputerName “PC5” | Select-Object Name, Vendor | Export-OpenXmlSpreadsheet -OutputPath c:\InstalledSoftwareList.xlsx

解説
Get-WmiObject -Class Win32_product –ComputerName “PC5” | Select-Object Name, Vendor
この部分の解説は前回の記事 PowerShell でインストール済みのソフトウェアを調査する をご参照ください。
Export-OpenXmlSpreadsheet -OutputPath c:\InstalledSoftwareList.xlsx
PowerTools for Open XML が提供する Export-OpenXmlSpreadsheet コマンドレットにより、渡されたプロパティをスプレッドシート、つまり Excel 形式で出力します。
–OutputPath オプションで出力パスを指定できます。

出力されたファイルの拡張子を .zip に変更して内部を調査してみると、Open XML 形式となっていることを確認できます。

以上です。