【问题标题】:Call a BAT in an elevated window and changing ENV variables before在提升的窗口中调用 BAT 并在之前更改 ENV 变量
【发布时间】:2016-03-19 14:40:00
【问题描述】:

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

Start-Process my.bat -Verb runas

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

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

【问题讨论】:

标签: windows powershell batch-file environment-variables powershell-2.0


【解决方案1】:

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

默认情况下,PowerShell 脚本未启用 IIRC "runas",因此包装脚本必须是批处理文件:

@echo off

set "VARIABLE1=%1"
set "VARIABLE2=%2"

call "C:\path\to\my.bat"

像这样运行它:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-09
    • 2015-05-01
    • 2013-08-13
    • 1970-01-01
    • 2020-05-15
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多