在提升的 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
在 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