Private/Get-ProcessOutput.ps1

function Get-ProcessOutput
{
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true)]
        [string]
        $FilePath,
        [Parameter()]
        [string[]]
        $ArgumentList
    )
    
    $process = New-Object System.Diagnostics.Process
    $process.StartInfo.UseShellExecute = $false
    $process.StartInfo.RedirectStandardOutput = $true
    $process.StartInfo.RedirectStandardError = $true
    $process.StartInfo.FileName = $FilePath

    if($ArgumentList) { $process.StartInfo.Arguments = $ArgumentList }
    Write-Verbose "Executing $($FilePath) with the following arguments: $([string]::Join(' ', $ArgumentList))"
    $null = $process.Start()
    
    [pscustomobject]@{
        StandardOutput = $process.StandardOutput.ReadToEnd()
        StandardError = $process.StandardError.ReadToEnd()
        ExitCode = $process.ExitCode
    }

    $process.Dispose()
}