在高架窗口中调用BAT并更改之前的ENV变量

时间:2015-12-14 07:15:17

标签: windows powershell batch-file environment-variables powershell-v2.0

在PowerShell脚本中,我必须在高架窗口中调用批处理文件。 所以我做了

Start-Process my.bat -Verb runas

现在,my.bat期望在原始窗口中设置一些ENV变量。 但是,由于提升的窗口是以admin身份执行的,因此我设置为常规用户的那些变量似乎不会在管理窗口中设置。

有没有办法在调用my.bat之前在管理窗口中设置ENV vars?

1 个答案:

答案 0 :(得分:3)

你想要的是不可能的。出于安全原因,提升的流程不会继承父母的环境。您可以做的是创建一个运行提升的包装脚本,并让该脚本在运行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