gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 00:47:49 26 4
gpt4 key购买 nike

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

我有两个需要运行的 EXE 文件。这些进程根据环境变量 %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
.
.
.

最佳答案

此行使 env var 更改永久化:

[System.Environment]::SetEnvironmentVariable("MainFiles", "$Temp","Machine")

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

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

关于powershell - 多次更改变量时将环境变量传递给 PowerShell 2.0 中的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16114815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com