Public/Write-JVWebLog.ps1

function Write-JVWebLog {
    param (
        [Parameter()]
        [String]$OriginalPath,

        [Parameter()]
        [String]$DestinationPath,

        [Parameter()]
        [System.IO.FileInfo]$HistoryPath,

        [Parameter()]
        [PSObject]$Data
    )

    process {
        $message = [PSCustomObject]@{
            Timestamp       = Get-Date -Format s
            Path            = $OriginalPath
            DestinationPath = $DestinationPath
            Id              = $Data.Id
            ReleaseDate     = $Data.ReleaseDate
            Maker           = $Data.Maker
        }

        $LogMutex = New-Object System.Threading.Mutex($false, "LogMutex")
        $LogMutex.WaitOne() | Out-Null
        $message | Export-Csv -LiteralPath $HistoryPath -Append -Encoding utf8 -UseQuotes Always
        $LogMutex.ReleaseMutex() | Out-Null
    }
}