2013-04-19 4 views
5

İlgili ortam değişkenlerini bir işleme geçirme konusunda bazı sorunlar yaşıyorum. Aşağıda kodumun bir parçasını görebilirsiniz, böylece ne yapmaya çalıştığımı anlayabilirsiniz.Değişken birden çok kez değiştirildiğinde, ortam değişkenlerini PowerShell 2.0'da bir işleme geçirme

Çalıştırmam gereken iki EXE dosyası var. İşlemler, %MainFiles% Ortam değişkeninin konumuna bağlı olarak bazı güncellemeleri çalıştırır. Kodu çalıştırdığımda, EXE dosyaları değişikliği tanımıyormuş gibi görünüyor. Ancak, Bilgisayar özellikleri altına baktığımda değişkenlerin doğru şekilde değiştirildiğini görüyorum.

Süreci, değişikliği tanımak için bu süreci nasıl zorlayabilirim? Bu ayarlamadan önce maalesef PowerShell zaten başlattı

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

: Teşekkür

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

cevap

3

Bu hat kalıcı env var değişiklik yapar. Env bloğu lansman zamanında enstantane. Bu çevre, iki ortaya çıkan sürecin miras kaldığı şeydir.

$env:MainFiles = $Temp 
:

iki süreç bu ilk yapmak doğru ortam değişkeni değeri ile başlatmak için almak için