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)
此行使环境变量更改永久化:
[System.Environment]::SetEnvironmentVariable("MainFiles", "$Temp","Machine")
Run Code Online (Sandbox Code Playgroud)
不幸的是,在您设置此选项之前,PowerShell 已经启动。它的环境块在启动时被快照。该环境是两个生成的进程继承的环境。
要使用正确的环境变量值启动两个进程,请首先执行以下操作:
$env:MainFiles = $Temp
Run Code Online (Sandbox Code Playgroud)