Use-FFProbe.ps1

function Use-FFProbe
{
    <#
    .Synopsis
        Uses ffprobe directly.
    .Description
        Runs ffprobe.
    .Example
        Use-FFProbe -FFProbeArgument "$home\Music\ASong.mp3"
    .Link
        Use-FFMpeg
    #>

    [CmdletBinding(PositionalBinding=$false)]
    [OutputType([string])]
    param(
    # Arguments to ffprobe.
    [Parameter(ValueFromPipelineByPropertyName,ValueFromRemainingArguments)]
    [Alias('FFProbeArguments','Argument','Arguments')]
    [string[]]
    $FFProbeArgument,

    # The path to FFProbe
    [string]
    $FFProbePath,

    # If set, will launch in a background job.
    [switch]
    $AsJob
    )

    process {
        #region Find FFProbe
        $ffprobe = & $findffprobe -ffprobePath $ffprobePath
        if (-not $ffprobe) {return}
        #endregion Find FFProbe
        #region Handle -AsJob
        if ($AsJob) {
            return & $startRoughDraftJob
        }
        #endregion Handle -AsJob
        #region Run FFProbe
        Write-Verbose "Invoke ffprobe with $($ffprobeArgument -join ' ')"
        & $ffprobe @ffprobeArgument *>&1 |
            . {
                process {
                    $line = $_
                    "$line"
                }
            }
        #endregion Run FFProbe
    }
}