Private/Get-ProcessOutput.ps1
function Get-ProcessOutput { [CmdletBinding()] param ( [Parameter(Mandatory=$true)] [string] $FilePath, [Parameter()] [string[]] $ArgumentList ) process { try { $process = New-Object System.Diagnostics.Process $process.StartInfo.UseShellExecute = $false $process.StartInfo.RedirectStandardOutput = $true $process.StartInfo.RedirectStandardError = $true $process.StartInfo.FileName = $FilePath $process.StartInfo.CreateNoWindow = $true if($ArgumentList) { $process.StartInfo.Arguments = $ArgumentList } Write-Verbose "Executing $($FilePath) with the following arguments: $([string]::Join(' ', $ArgumentList))" $null = $process.Start() [pscustomobject]@{ StandardOutput = $process.StandardOutput.ReadToEnd() StandardError = $process.StandardError.ReadToEnd() ExitCode = $process.ExitCode } } finally { $process.Dispose() } } } |