function Invoke-CallOperatorWithPathAndParameters { <# .SYNOPSIS This function is basically just a wrapper for unit-testing purposes. Used to call a system file with an array of string args. The best use-case for this is sc.exe execution, or topshelf installers. .PARAMETER Path The file path being invoked .PARAMETER Arguments This value just gets splatted as passed in. .OUTPUTS This function outputs whatever came out of the called function #> [CmdletBinding()] [OutputType([System.Object])] param( [Parameter(Mandatory=$true)] [string]$Path, [Parameter(Mandatory=$true)] [string[]]$Arguments ) # Fun fact: $LASTEXITCODE is set by the past .exe to run in the call stack, not by functions # So if this sets a $LASTEXITCODE we can test for it in the caller function (& $Path @Arguments) }