2013-04-19 10 views
5

対応する環境変数をプロセスに渡す際に問題があります。下に私のコードの一部が表示されますので、私がしようとしていることを理解することができます。変数が複数回変更されたときにPowerShell 2.0のプロセスに環境変数を渡す

実行する必要がある2つのEXEファイルがあります。プロセスは、環境変数%MainFiles%の場所に基づいていくつかの更新を実行します。コードを実行すると、EXEファイルが変更を認識しないようです。しかし、コンピュータのプロパティを見てみると、変数が正しく変更されていることがわかります。

どのようにプロセスに強制的に変更を認識させることができますか?これを設定する前に、残念ながら、PowerShellはすでに開始した

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

: おかげ

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 
. 
. 
. 

答えて

3

この行は永久のenv VaRの変更を行います。そのenvブロックは、起動時にスナップショットされます。その環境は、2つの生成されたプロセスが継承するものです。最初にこれを行う正しい環境で変数の値を起動するために、2つのプロセスを取得するには

$env:MainFiles = $Temp 
関連する問題