3

im making a script like sudo, the idea is that the sudo function is going to run a scriptblock in elevation. I'm having trouble with the strings variables, that i pass in that scriptblock. Is like the doubles quotes disappear. What is wrong with my approach? Here is the code.

function sud([ScriptBlock]$SomeCode){
$here = Get-Location;
Start-Process Powershell -Verb Runas -ArgumentList "-command &{cd $here; $SomeCode}" 
}

and i want to run commands like this:

$var ="Path"
$newpath = $env:path + ";c:\somedir"
$target = "Machine"
sud -somecode { [Environment]::SetEnvironmentVariable($var, $newpath, $target)}

for testing purpose one can add the parameter -noexit to the argumentlist..

Start-Process Powershell -Verb Runas -ArgumentList "-noexit","-command &{cd $here; $SomeCode}" 
mjsr
  • 181
  • 7

1 Answers1

2

Try wrapping the command in single ticks and moving the double quote to the front of the actual command. This is what I do in my environment.

Start-Process Powershell -Verb Runas -ArgumentList `-command "&{cd $here; $SomeCode}"`
Nick
  • 256
  • 1
  • 5
  • 20