PSSudo.psm1
if([Diagnostics.Process]::GetCurrentProcess().Modules | ? { ($_.ModuleName -eq 'ConEmuHk.dll') -or ($_.ModuleName -eq 'ConEmuHk64.dll') }) { $emuHk = $true; } else { $emuHk = $false; } function Start-Elevated { $psi = new-object System.Diagnostics.ProcessStartInfo if($args.Length -eq 0) { if($emuHk) { $psi.FileName = $env:WINDIR + '\System32\WindowsPowerShell\v1.0\powershell.exe' $psi.Arguments = '-new_console:a -ExecutionPolicy ' + (Get-ExecutionPolicy) + ' -NoExit -Command "Import-Module ''' + $PSScriptRoot + '''"' $psi.UseShellExecute = $false } else { Write-Warning "You must provived to program to be executed and its command line arguments" return } } else { $program = $args[0] $alias = Get-Alias $program -ErrorAction SilentlyContinue while($alias) { $program = $alias.Definition; $alias = Get-Alias $program -ErrorAction SilentlyContinue } if($emuHk) { $fullProgram = which $program | select-object -First 1 if($fullProgram) { $program = $fullProgram } $psi.UseShellExecute = $false $cmdLine = '-new_console:a '; } else { $psi.Verb = "runas" $cmdLine = '' } if($args.Length -ne 1) { $cmdLine = $cmdLine + [string]::Join(' ', ($args[1..$args.Length] | % { '"' + (([string] $_).Replace('"', '""')) + '"' }) ) } $psi.FileName = $program $psi.Arguments = $cmdLine } [System.Diagnostics.Process]::Start($psi) | out-null } Set-Alias sudo Start-Elevated |