在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