Public/Invoke-ElevatedProcess.ps1
function Invoke-ElevatedProcess { [CmdletBinding()] Param ( [Parameter(Mandatory = $True, Position = 0)] [string]$ProcessName, [Parameter(Mandatory = $False, Position = 1)] [string]$Arguments, [Parameter(Mandatory = $False, Position = 2)] [string]$WorkingDirectory, [Parameter(Mandatory = $False)] [switch]$NoWait ) Write-Verbose "Invoking elevated process." Write-Verbose (" Args: " + $Arguments) Write-Verbose (" StartIn: " + $WorkingDirectory) $ProcessInfo = new-object System.Diagnostics.ProcessStartInfo "$ProcessName" $ProcessInfo.Verb = "runas" #$ProcessInfo.UseShellExecute = $false $ProcessInfo.Arguments = $Arguments #$ProcessInfo.RedirectStandardOutput = $true #$ProcessInfo.RedirectStandardError = $true $ProcessInfo.WorkingDirectory = $WorkingDirectory $Process = New-Object System.Diagnostics.Process $Process.StartInfo = $ProcessInfo try { $Process.Start() | Out-Null if (!($NoWait)) { $Process.WaitForExit() } return $Process } catch { Write-Error "Unable to start elevated process." return $false } } |