我目前正在对无人参与的特殊软件安装进行故障排除。我将问题缩小到一个缺失的环境变量,我现在非常困惑,因为我不知道它为什么会丢失。
我可以像这样重现这个问题:
我有一个名为batch.cmd
的批处理文件。该文件包含以下代码:
SET
Pause
SET
命令列出环境变量。
我从PowerShell调用此脚本,如:
$Status = Start-Process -FilePath "C:\...\Batch.cmd" -PassThru -Wait
我也尝试将其称为:
& C:\...\Batch.cmd
因此,与直接运行批处理脚本相比,我在 PATH 变量中缺少2个文件夹路径。看一下截图:
正如您所见,如果直接调用脚本, PATH 变量包含更多条目。
条目本身并非由我设定。它们必须由安装程序在早期安装步骤中创建。
我在设置环境变量方面没有太多经验,我也不知道它是什么以及为什么会这样。
有人知道发生了什么吗?
更新#1:
我仍然没有一个干净的解决方案。
更多细节:
我正在创建无人参与的软件安装。第一步调用设置。似乎安装例程为 PATH 环境变量添加了2个文件夹路径。
在第二步中,我调用一个批处理脚本,该脚本需要 PATH 变量中的那两个文件夹路径,但由于它们不存在而失败。
我尝试在使用以下行调用批处理之前在PowerShell中重新加载变量:
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
它似乎适用于PS环境,但批次没有变化。 第二次调用脚本它的工作原理。它也在重启后工作。
更新#2: