【问题标题】:powershell start-process doesn't know about environment variable (PATH) changespowershell start-process 不知道环境变量(PATH)的变化
【发布时间】:2020-05-07 23:57:54
【问题描述】:

我使用powershell设置了一些系统环境变量,包括路径。然后我用 Start-Process 开始一些任务。不幸的是,新进程的环境变量与启动 powershell 的环境变量相同。重现问题

1) 修改路径。我正在删除%JAVA_HOME%/bin,打开一个命令窗口,看到java 命令不起作用。

2) 启动 Powershell ISE

3) 将%JAVA_HOME%/bin 添加到系统路径。打开一个新的命令窗口,查看java 命令是否有效。

4) 在之前打开的 Powershell 窗口中,提交命令 start cmd 以使 powershell 打开一个 cmd.exe 命令窗口(“命令提示符”)。在新的命令窗口中验证 java 不起作用。

我的期望是新启动的进程将拥有自己的环境变量的新副本。

你能告诉我如何让 powershell 启动一个新任务并让该任务知道当前环境吗?

我试过了

start cmd

Start-Process -FilePath "cmd"

Start-Process -FilePath "cmd" -UseNewEnvironment

& cmd

谢谢!

【问题讨论】:

  • -UseNewEnvironment 开关 Start-Process 旨在满足您的需求,但在 PowerShell Core 7.0.0-rc.2 中它(仍然)被破坏 - 请参阅 this GitHub issue

标签: powershell environment-variables


【解决方案1】:

以下命令将启动一个与调用环境分离的进程,并提供新变量供您使用。

Invoke-CimMethod -ClassName Win32_Process -Name Create -Arguments @{CommandLine = "cmd.exe"}

【讨论】:

    猜你喜欢
    • 2020-08-17
    • 2019-06-30
    • 1970-01-01
    • 2019-05-15
    • 2016-12-18
    • 1970-01-01
    • 2012-09-05
    • 2015-07-05
    • 1970-01-01
    相关资源
    最近更新 更多