在提升的 window 中调用 BAT 并在之前更改 ENV 变量

Call a BAT in an elevated window and changing ENV variables before

在 PowerShell 脚本中,我必须在提升的 window 中调用批处理文件。 所以我

Start-Process my.bat -Verb runas

现在,my.bat 期望有一些我在原始 window 上设置的 ENV 变量。 但是,由于提升的 window 是以管理员身份执行的,所以我设置为普通用户的那些变量似乎没有在管理员 window 上设置。

有没有办法在调用 my.bat 之前在管理员 window 中设置环境变量?

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