Home > Windows にまつわる e.t.c.

PowerShell スクリプトの実行ログを出力する


PowerShell スクリプトで運用管理する際にはログ出力は必須ですね。

僕はこんな感じの関数作ってログ出力しています。

ログファイル名に $MyInvocation.MyCommand.Name を設定すると、.ps1 のファイル名がログファイル名になります。

##########################################################################
# ログ出力
##########################################################################
function Log(
            $LogString
            ){

    # ログの出力先
    $LogPath = "C:\Log"

    # ログファイル名
    $LogName = "ExecutLog"

    $Now = Get-Date

    # Log 出力文字列に時刻を付加(YYYY/MM/DD HH:MM:SS.MMM $LogString)
    $Log = $Now.ToString("yyyy/MM/dd HH:mm:ss.fff") + " "
    $Log += $LogString

    # ログファイル名が設定されていなかったらデフォルトのログファイル名をつける
    if( $LogName -eq $null ){
        $LogName = "LOG"
    }

    # ログファイル名(XXXX_YYYY-MM-DD.log)
    $LogFile = $LogName + "_" +$Now.ToString("yyyy-MM-dd") + ".log"

    # ログフォルダーがなかったら作成
    if( -not (Test-Path $LogPath) ) {
        New-Item $LogPath -Type Directory
    }

    # ログファイル名
    $LogFileName = Join-Path $LogPath $LogFile

    # ログ出力
    Write-Output $Log | Out-File -FilePath $LogFileName -Encoding Default -append

    # echo させるために出力したログを戻す
    Return $Log
}

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.