我正在制作一个类似 sudo 的脚本,其想法是 sudo 函数将在高程中运行脚本块。我在该脚本块中传递的字符串变量有问题。好像双引号消失了。我的方法有什么问题?这是代码。
function sud([ScriptBlock]$SomeCode){
$here = Get-Location;
Start-Process Powershell -Verb Runas -ArgumentList "-command &{cd $here; $SomeCode}"
}
我想运行这样的命令:
$var ="Path"
$newpath = $env:path + ";c:\somedir"
$target = "Machine"
sud -somecode { [Environment]::SetEnvironmentVariable($var, $newpath, $target)}
为了测试目的,可以将参数 -noexit 添加到参数列表中。
Start-Process Powershell -Verb Runas -ArgumentList "-noexit","-command &{cd $here; $SomeCode}"
答案1
尝试将命令括在单引号中,并将双引号移到实际命令的前面。这是我在我的环境中所做的。
Start-Process Powershell -Verb Runas -ArgumentList `-command "&{cd $here; $SomeCode}"`