【问题标题】:Create/Destroy New Environment in PowerShell Script在 PowerShell 脚本中创建/销毁新环境
【发布时间】:2012-07-02 07:30:56
【问题描述】:

我正在尝试找到一种方法,通过该方法可以执行 PowerShell 脚本,而无需在脚本和其他脚本/控制台之间来回“泄漏”环境。

即如果我在调用脚本之前设置了一个环境变量,我不希望脚本看到那个环境变量,如果我在脚本中设置了一个环境变量,我不希望能够从控制台看到它之后。

我正在构建调用 vcvarsall.bat 的 PowerShell 构建/编译脚本(将所有 Visual C++ 2010 变量等放入环境中),但我不希望环境 em>vcvarsall.bat 在控制台上创建“leaking”——我想每次都重新开始,而不关闭/重新打开 PowerShell 窗口。

【问题讨论】:

    标签: powershell environment-variables environment


    【解决方案1】:

    您可以使用以下方式调用脚本:

    powershell.exe -file <PS1 File>
    

    当前变量在 PS1 脚本中将不可用,在 PS1 脚本中创建的变量在退出后将不可用。

    【讨论】:

    • 需要明确的是,当您从另一个进程启动一个进程时,新进程将继承其父进程创建时的环境。这意味着在控制台中创建的环境变量出现在脚本的环境中,尽管脚本中的任何环境更改都不会传播回父级(比较 dir 调用的输出例如:$env:v1,$env:v2 = 'alpha','beta'; dir env:v*; powershell { $env:v2,$env:v3 = 'beta2','gamma'; dir env:v* }; dir env:v*)。
    猜你喜欢
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    相关资源
    最近更新 更多