public/Execute-Command.ps1

function Execute-Command {
    [CmdletBinding(DefaultParameterSetName='Default')]
    param (
        [Parameter(Mandatory,ParameterSetName='Default',Position=0)]
        [ValidateNotNull()]
        [object]$Command
    ,
        [Parameter(ValueFromPipeline,ParameterSetName='Pipeline')]
        [object]$InputObject
    )

    process {
        if ($InputObject) {
            $Command = $InputObject
        }
        Invoke-Expression $Command

        # Honor `-ErrorAction Stop` for non-zero exit code
        if ($ErrorActionPreference -eq 'Stop' -and $LASTEXITCODE) {
            throw "Command exit code was $LASTEXITCODE. Command: $Command"
        }
    }
}