<# .SYNOPSIS ログを出力する .DESCRIPTION ログを出力する .LINK http://www. .NOTES ログを出力する .EXAMPLE HSC-Write-Log -LogMessage 'ログを出力する' #> function HSC-Write-Log { param ( [String]$LogPrefix = 'HSC', # ログプレフィクス [String]$LogPath = 'D:\HSCScripts', # ログ出力先 [Parameter(Mandatory = $true)] [String]$LogMessage, # 出力メッセージ [ValidateSet('Both', 'DisplayOnly', 'LogOnly')] [String]$LogWriteType = 'Both', # 表示のみ [Boolean]$WithDateTime = $true # 日時を付与する ) begin { $HSC_Datetime1 = Get-Date -Format 'yyyy/MM/dd HH:mm:ss.fff' $HSC_Datetime2 = Get-Date -Format 'yyyyMMdd' } process { # 日時付与処理 if ($WithDateTime) { # Log 出力文字列に時刻を付加(YYYY/MM/DD HH:MM:SS.MMM $LogMessage) $HSC_LogMessage = $HSC_Datetime1 + ' ' + $LogMessage } else { $HSC_LogMessage = $LogMessage } # 出力タイプが Both か LogOnly の場合 if (($LogWriteType -eq 'Both') -or ($LogWriteType -eq 'LogOnly')) { # ログファイル名($LogPrefix_YYYYMMDD.log) $HSC_LogFile = $LogPrefix + '_' + $HSC_Datetime2 + '.log' # ログフォルダーがなかったら作成 if (-not(Test-Path $LogPath)) { New-Item -Path $LogPath -Type Directory } # ログファイル名 $HSC_LogFilename = Join-Path -Path $LogPath -ChildPath $HSC_LogFile # ログ出力 Write-Output $HSC_LogMessage | Out-File -FilePath $HSC_LogFilename -Encoding Default -append } } end { # 出力タイプが Both か DisplayOnly の場合 if (($LogWriteType -eq 'Both') -or ($LogWriteType -eq 'DisplayOnly')) { # echo させるために出力したログを戻す(日時がいらない場合は、引数をまま返せばいい) return $HSC_LogMessage } else { exit $HSC_LogMessage } } }