PowerShellで日々の処理ログや監視結果をExcelに出力できれば、業務報告や可視化が容易になります。CSVではなくExcel(.xlsx)形式に直接書き込むことで、整った形式のレポートを自動で生成することが可能です。この記事では、PowerShellスクリプトでログ情報をExcelに簡単に出力する方法を紹介します。
必要なモジュールのインストール
PowerShellでExcelを扱うには、ImportExcel モジュールが便利です。事前に次のコマンドでインストールしておきましょう。
Install-Module -Name ImportExcel -Scope CurrentUser
インストール後は Export-Excel
コマンドを使って、Excelファイルへの出力が可能になります。
ログデータのサンプル
以下の例では、仮想的なログ情報(日時、イベント、結果)をオブジェクトとして作成しています。
$logs = @()
$logs += [pscustomobject]@{
TimeStamp = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")
Event = "バックアップ開始"
Result = "成功"
}
$logs += [pscustomobject]@{
TimeStamp = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")
Event = "ファイル転送"
Result = "失敗"
}
Excelファイルに出力
ImportExcelモジュールを利用して、上記のログをExcelファイルに出力します。
Export-Excel -Path "C:\Report\log_report.xlsx" -WorksheetName "ログ一覧" -AutoSize -TableName "LogTable" -ClearSheet -InputObject $logs
-AutoSize
を指定すると列幅が自動調整され、-ClearSheet
をつけることで既存のシート内容をクリアしてから出力します。
実行結果の確認
指定したファイルパスにExcelが生成され、「ログ一覧」シートに内容が出力されます。テーブル形式で整っており、Excelのフィルター機能などもそのまま活用できます。
応用:ログを追記していく処理
ログを日別で出力したい、もしくは同じファイルに追記したい場合は、-Append
オプションを使うことで可能です。
Export-Excel -Path "C:\Report\log_report.xlsx" -WorksheetName "ログ一覧" -AutoSize -Append -InputObject $logs
まとめ
PowerShellのImportExcelモジュールを活用すれば、ログやレポートをExcel形式で簡単に出力できます。業務の自動化だけでなく、関係者との情報共有にも役立ちます。スケジューラと組み合わせれば、定期レポートの自動生成も可能です。