【PowerShell】Excelにログを出力する簡易レポートスクリプト

【PowerShell】Excelにログを出力する簡易レポートスクリプト PowerShell

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形式で簡単に出力できます。業務の自動化だけでなく、関係者との情報共有にも役立ちます。スケジューラと組み合わせれば、定期レポートの自動生成も可能です。