当变量多次更改时,将环境变量传递给PowerShell 2.0中的进程

RHQ*_*RHQ 5 powershell environment-variables

在将相应的环境变量传递给进程时,我遇到了一些问题.下面你可以看到我的部分代码,这样你就可以理解我正在尝试做什么.

我有两个需要运行的EXE文件.这些进程根据Environment变量的位置运行一些更新%MainFiles%.当我运行代码时,似乎EXE文件无法识别更改.但是,当我查看计算机属性时,我确实看到变量已正确更改.

有谁知道我怎么能强制进程识别变化?谢谢

while ($i -lt $Size) {
  if ($TempEnv[$i] -eq "Done"){
    $ExitCode="Completed"
    return
  } else {
    $Temp = $TempEnv[$i]
    Write-Host ("Starting Update for  " + $Temp) -foregroundcolor "Green"

    [System.Environment]::SetEnvironmentVariable("MainFiles", "$Temp","Machine")
    [System.Environment]::GetEnvironmentVariable("MainFiles","Machine")
    Copy-Item $CopyInstallData -destination $Temp
    $process = Start-Process XMLUpgrade.exe -WorkingDirectory "C:\Program Files\Dtm" -wait
    $process = Start-Process Update.exe -WorkingDirectory "C:\Program Files\Dtm" -wait
.
.
.
Run Code Online (Sandbox Code Playgroud)

Kei*_*ill 5

此行使环境变量更改永久化:

[System.Environment]::SetEnvironmentVariable("MainFiles", "$Temp","Machine")
Run Code Online (Sandbox Code Playgroud)

不幸的是,在您设置此选项之前,PowerShell 已经启动。它的环境块在启动时被快照。该环境是两个生成的进程继承的环境。

要使用正确的环境变量值启动两个进程,请首先执行以下操作:

$env:MainFiles = $Temp
Run Code Online (Sandbox Code Playgroud)