从PowerShell调用批处理时缺少环境变量(PATH)?

时间:2017-04-30 18:43:52

标签: powershell batch-file

我目前正在对无人参与的特殊软件安装进行故障排除。我将问题缩小到一个缺失的环境变量,我现在非常困惑,因为我不知道它为什么会丢失。

我可以像这样重现这个问题:

我有一个名为batch.cmd的批处理文件。该文件包含以下代码:

SET
Pause

SET命令列出环境变量。

我从PowerShell调用此脚本,如:

$Status = Start-Process -FilePath "C:\...\Batch.cmd" -PassThru -Wait

我也尝试将其称为:

& C:\...\Batch.cmd

因此,与直接运行批处理脚本相比,我在 PATH 变量中缺少2个文件夹路径。看一下截图:

Output-Comparison

正如您所见,如果直接调用脚本, PATH 变量包含更多条目。

条目本身并非由我设定。它们必须由安装程序在早期安装步骤中创建。

我在设置环境变量方面没有太多经验,我也不知道它是什么以及为什么会这样。

有人知道发生了什么吗?

更新#1:

我仍然没有一个干净的解决方案。

更多细节:

我正在创建无人参与的软件安装。第一步调用设置。似乎安装例程为 PATH 环境变量添加了2个文件夹路径。

在第二步中,我调用一个批处理脚本,该脚本需要 PATH 变量中的那两个文件夹路径,但由于它们不存在而失败。

我尝试在使用以下行调用批处理之前在PowerShell中重新加载变量:

$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")

它似乎适用于PS环境,但批次没有变化。 第二次调用脚本它的工作原理。它也在重启后工作。

更新#2:

New Environment

0 个答案:

没有答案