#-Begin-----------------------------------------------------------------

Param(
  [String]$Arguments
)

#-Function CallScript---------------------------------------------------
Function CallScript {

  Param(
    [String]$Interpreter,
    [String]$ScriptFile
  )

  [System.Diagnostics.ProcessStartInfo]$startInfo = `
    [System.Diagnostics.ProcessStartInfo]::new();
  $startInfo.FileName = $Interpreter;
  $startInfo.Arguments = "$($ScriptFile) $($Arguments)";
  $startInfo.UseShellExecute = $False;
  $startInfo.CreateNoWindow = $True;
  $startInfo.RedirectStandardOutput = $True;
  $startInfo.RedirectStandardError = $True;
  [System.Diagnostics.Process]$Proc = `
    [System.Diagnostics.Process]::new();
  $Proc.StartInfo = $startInfo;
  If($Proc.Start() -eq $False) {
    Return;
  }
  [System.IO.StreamReader]$stdOut = $Proc.StandardOutput;
  [System.IO.StreamReader]$stdErr = $Proc.StandardError;
  If(($Null -eq $stdOut) -or ($Null -eq $stdErr)) {
    Return;
  }
  $Result = $stdOut.ReadToEnd();
  If($Result.Length -eq 0) {
    Return $stdErr.ReadToEnd();
  } Else {
    Return $Result;
  }

}

#-Sub Main--------------------------------------------------------------
Function Main {

  $Result = CallScript -Interpreter "c:\Program Files\Python37\python.exe" `
    -ScriptFile "C:\Dummy\Test.py";
  $Result;

  $Result = CallScript -Interpreter "c:\Program Files\AutoIt3\AutoIt3_x64.exe" `
    -ScriptFile "C:\Dummy\Test.au3";
  $Result;

}

#-Main------------------------------------------------------------------
Main;

#-End-------------------------------------------------------------------