2009-09-23 67 views
12

Tôi có một tập lệnh PowerShell để kiểm tra xem một thư mục nào đó có nằm trên PATH (bằng cách xem qua đường dẫn $ env:) không. Có vẻ như đường dẫn $ env: được tải và được dò tìm cục bộ bởi mỗi ứng dụng khi khởi động, và phạm vi đó được truyền cho bất kỳ ứng dụng con nào. Vì vậy ... nếu ai đó mở Firefox, tải chương trình của tôi, chạy nó, nhận được thông báo rằng họ nên thay đổi đường dẫn của họ, khắc phục sự cố, sau đó chạy lại chương trình từ cửa sổ tải xuống Firefox, họ sẽ nhận được cùng một thông báo, trừ khi họ bắt đầu chương trình của tôi từ Explorer hoặc khởi động lại Firefox.

Có cách nào để tải lại $ env: đường dẫn trong tập lệnh PowerShell của tôi để nó có được giá trị hiện tại, như thể nó đã được mở từ Explorer không?

Trả lời

7

Nếu bạn đang chạy bên ngoài bối cảnh của một trình duyệt tôi sẽ cho bạn biết sử dụng

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

để thay đổi biến Path cho người dùng. Tham số thứ ba cho phép bạn chỉ định Process, User hoặc Machine. Nếu bạn chỉ định Người dùng hoặc Máy thì thay đổi là vĩnh viễn và sẽ xuất hiện trong các khối env của tất cả các chương trình bắt đầu sau đó. Tuy nhiên, kể từ khi bạn đang chạy trong trình duyệt tôi không nghĩ rằng bạn sẽ có thể làm điều đó.

Nếu người dùng thay đổi đường dẫn của họ, thay đổi đó sẽ có sẵn cho các phiên bản trình duyệt trong tương lai. Một tùy chọn khác là kiểm tra (Get-Command) cho ứng dụng bạn cần trong đường dẫn và nếu bạn không thể tìm thấy, hãy tự sửa đổi $env:Path trong tập lệnh mỗi khi nó chạy. Đó là, trừ khi bạn không biết con đường nên là gì.

+5

Không, đó là những gì tôi đang tìm kiếm. [System.Environment] :: GetEnvironmentVariable ("PATH", "Machine") đã cho tôi cài đặt hiện tại của đường dẫn, bất kể ứng dụng của tôi được chạy từ ứng dụng nào hoặc khi ứng dụng đó được mở. Cảm ơn đã giúp đỡ. –

+0

những người rất hữu ích. tôi đã cố gắng để cài đặt kịch bản mercurial và sau đó ngay lập tức nhân bản một kho lưu trữ và điều này đã làm các trick cho tôi. –

Các vấn đề liên quan