2009-09-23 22 views
12

Belirli bir dizin (: yol $ env bakarak) PATH açık olduğunu kontrol eden bir PowerShell komut dosyası var. Başlangıçta her uygulama tarafından $ env: yolunun yüklenip yerel olarak kapsamlandığı ve bu kapsamın tüm alt uygulamalara aktarıldığı anlaşılıyor. Yani ... Birisi Firefox'u açarsa, programımı indirir, çalıştırır, yollarını değiştirmeleri gerektiğini bildiren bir mesaj alır, sorunu giderir, daha sonra programı Firefox yüklemeleri penceresinden tekrar çalıştırırsa, aynı mesajı alırlar. Programımı Explorer'dan başlatıyorlar veya Firefox'u yeniden başlatıyorlar.

PowerShell betiğimde $ env: yolunu yeniden yüklemenin bir yolu var mı, böylece Explorer'dan açılmış gibi geçerli değeri alacak mı? Bir tarayıcıda bağlamı dışında çalışan olsaydı

cevap

7

Sana kullanıcı için yol değişkeni değiştirmek için

[System.Environment]::SetEnvironmentVariable(string name, string value, EnvironmentVariableTarget target) 

kullanmak anlatırdı. Üçüncü parametre, İşlemi, Kullanıcıyı veya Makineyi belirtmenize izin verir. Kullanıcı veya Makine'yi belirtirseniz, değişiklik kalıcıdır ve bundan sonra başlayan tüm programların env bloklarında görünecektir. Ancak, tarayıcıda çalıştığınız için bunu yapabileceğinizi düşünmüyorum. Kullanıcı, yolunu değiştirirse

, bu değişiklik tarayıcının gelecek örneklerine satışa sunulacak. Başka bir seçenek de yolda ihtiyaç uygulamaya ilişkin testi (Get-Command) etmektir ve bunu bulamazsanız, komut $env:Path o her çalıştığında kendini değiştirin. Yani, yolun ne olduğunu bilmediğin sürece.

+5

Hayır, o benim aradığım buydu. [System.Environment] :: GetEnvironmentVariable ("PATH", "Makine"), komut dosyasının çalıştırıldığı uygulamadan veya bu uygulama açıldığında ne olursa olsun, yolun geçerli ayarını bana verdi. Yardım için teşekkürler. –

+0

çok yardımcı adamlar. mercurial'i kurmaya çalışıyordum ve hemen bir depoyu klonladım ve bu benim için hile yaptı. –

İlgili konular