在boost的窗口中调用BAT并更改ENVvariables

在PowerShell脚本中,我必须在提升的窗口中调用batch file。 所以我呢

Start-Process my.bat -Verb runas 

现在, my.bat期望在原始窗口中设置一些ENVvariables。 但是,由于提升的窗口是以pipe理员身份执行的,因此我设置为普通用户的这些variables似乎没有在pipe理员窗口中设置。

有没有办法在调用my.bat之前在pipe理窗口中设置ENVvariables?

你想要的是不可能的。 出于安全原因,升级的流程不会继承父级的环境。 你可以做的是创建一个运行提升的包装脚本,并让该脚本在运行my.bat之前从参数设置环境变量。

默认情况下,IIRC“runas”未启用PowerShell脚本,所以包装脚本必须是批处理文件:

 @echo off set "VARIABLE1=%1" set "VARIABLE2=%2" call "C:\path\to\my.bat" 

像这样运行它:

 Start-Process .\wrapper.ps1 -ArgumentList 'foo', 'bar' -Verb runas