From 85c8a8890a28ecc426b3b4ab0fd83472d2f8bf6c Mon Sep 17 00:00:00 2001 From: Lord Hepipud Date: Mon, 30 Sep 2019 00:34:01 +0200 Subject: [PATCH] Added missing tool function to start processes --- lib/core/tools/Start-IcingaProcess.psm1 | 37 +++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/core/tools/Start-IcingaProcess.psm1 diff --git a/lib/core/tools/Start-IcingaProcess.psm1 b/lib/core/tools/Start-IcingaProcess.psm1 new file mode 100644 index 0000000..4ee2a06 --- /dev/null +++ b/lib/core/tools/Start-IcingaProcess.psm1 @@ -0,0 +1,37 @@ +function Start-IcingaProcess() +{ + param( + [string]$Executable, + [string]$Arguments, + [switch]$FlushNewLines + ); + + $processData = New-Object System.Diagnostics.ProcessStartInfo; + $processData.FileName = $Executable; + $processData.RedirectStandardError = $true; + $processData.RedirectStandardOutput = $true; + $processData.UseShellExecute = $false; + $processData.Arguments = $Arguments; + + $process = New-Object System.Diagnostics.Process; + $process.StartInfo = $processData; + $process.Start() | Out-Null; + + $stdout = $process.StandardOutput.ReadToEnd(); + $stderr = $process.StandardError.ReadToEnd(); + $process.WaitForExit(); + + if ($flushNewLines) { + $stdout = $stdout.Replace("`n", '').Replace("`r", ''); + $stderr = $stderr.Replace("`n", '').Replace("`r", ''); + } else { + if ($stdout.Contains("`n")) { + $stdout = $stdout.Substring(0, $stdout.LastIndexOf("`n")); + } + } + return @{ + 'Message' = $stdout; + 'Error' = $stderr; + 'ExitCode' = $process.ExitCode; + }; +}