private/Write-VPASLogger.ps1
<#
.Synopsis Output to log files CREATED BY: Vadim Melamed, EMAIL: vmelamed5@gmail.com .DESCRIPTION Helper function to log outputs for bulk operations #> function Write-VPASLogger{ [OutputType([bool])] [CmdletBinding()] Param( [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true,Position=0)] [String]$LogStr, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true,Position=1)] [ValidateSet('BulkSafeCreation','BulkAccountCreation','BulkSafeMembers')] [String]$BulkOperation, [Parameter(ValueFromPipelineByPropertyName=$true,Position=2)] [Switch]$NewFile ) Begin{ } Process{ try{ Write-verbose "RECIEVED LOGSTR: $LogStr" Write-Verbose "LOGGING TO CORRECT LOG: $BulkOperation" $timestamp = Get-Date -Format "(MM-dd-yyyy HH:mm:ss)" $curUser = $env:UserName $targetDirectory = "C:\Users\$curUser\AppData\Local\VPASModuleOutputs" $targetLogsDirectory = "C:\Users\$curUser\AppData\Local\VPASModuleOutputs\Logs" #SELECTING LOG if($BulkOperation -eq "BulkSafeCreation"){ $targetLog = "C:\Users\$curUser\AppData\Local\VPASModuleOutputs\Logs\BulkSafeCreationLog.log" Write-Verbose "SETTING TARGETLOG: $targetLog" } elseif($BulkOperation -eq "BulkAccountCreation"){ $targetLog = "C:\Users\$curUser\AppData\Local\VPASModuleOutputs\Logs\BulkAccountCreationLog.log" Write-Verbose "SETTING TARGETLOG: $targetLog" } elseif($BulkOperation -eq "BulkSafeMembers"){ $targetLog = "C:\Users\$curUser\AppData\Local\VPASModuleOutputs\Logs\BulkSafeMembersLog.log" Write-Verbose "SETTING TARGETLOG: $targetLog" } #CREATING DIRECTORY if(Test-Path -Path $targetDirectory){ #DO NOTHING } else{ write-verbose "$targetDirectory DOES NOT EXIST, CREATING DIRECTORY" $MakeDirectory = New-Item -Path $targetDirectory -Type Directory } if(Test-Path -Path $targetLogsDirectory){ #DO NOTHING } else{ write-verbose "$targetLogsDirectory DOES NOT EXIST, CREATING DIRECTORY" $MakeDirectory = New-Item -Path $targetLogsDirectory -Type Directory } if($NewFile){ write-output "$timestamp : BEGIN LOG" | Set-Content $targetLog } write-output "$timestamp : $LogStr" | Add-Content $targetLog return $true }catch{ Write-VPASOutput -str "COULD NOT WRITE TO LOGS" -type E Write-VPASOutput -str "$_" -type E return $false } } End{ } } |