2012-01-13 36 views
5

Có cách nào để xác định biến trong PowerShell vì vậy khi tôi mở một cửa sổ PowerShell mới, nó sẽ giữ cùng một giá trị?Biến PowerShell vĩnh viễn

Tôi sẽ cần biến này để giữ giá trị của nó, bởi vì tôi sẽ cần phải khởi động lại máy chủ của tôi mọi lúc và sau đó, và tôi không muốn mất các giá trị này.

+0

Bạn đang lưu trữ những gì trên các biến mà bạn sẽ cần tồn tại mãi mãi? – JNK

+2

Vâng, tôi có một biến có danh sách các tệp trong một thư mục. Ví dụ, tôi có một biến gọi là $ directorysnapshot = dir -r 'path' có một danh sách tất cả các tệp trong thư mục đó và tôi muốn giữ nó cùng một danh sách. Tôi không thể có biến đó xác định lại mỗi lần trong khi khởi động vì một số tệp có thể đã thay đổi kể từ đó – GwFiles

Trả lời

1

Bạn có cân nhắc các nguồn thay thế khác để lưu trữ biến không? Các biến trong PowerShell thường chỉ tồn tại miễn là phiên PowerShell. Tuy nhiên có một số nguồn khác mà PowerShell có thể dễ dàng truy vấn có nghĩa là tồn tại lâu hơn. Đặc biệt là hệ thống đăng ký và tập tin.

Đối với một biến có nghĩa là tồn tại trong quá trình khởi động lại, tôi sẽ lưu trữ trong sổ đăng ký và sau đó sử dụng PowerShell để truy vấn giá trị đó (có thể là bộ đệm trong biến phiên).

+0

Vâng, tôi có một biến có danh sách các tệp trong thư mục. Ví dụ, tôi có một biến gọi là $ directorysnapshot = dir -r 'path' có một danh sách tất cả các tệp trong thư mục đó và tôi muốn giữ nó cùng một danh sách. Tôi không thể có biến đó xác định lại mỗi lần trong quá trình khởi động vì một số tệp có thể đã thay đổi kể từ đó. – GwFiles

+1

@GwFiles nếu nó cần phải được duy trì mặc dù tại sao registry lại là một nơi tồi tệ? Kết quả có thể được duy trì và tải lại khi khởi động – JaredPar

3

Bạn có thể lưu trữ dữ liệu của mình trong PowerShell Profile.

+0

Đây là những gì tôi làm, thông thường. Tôi có xu hướng lưu trữ những thứ như url svn và những thứ tương tự, vì vậy tôi có thể thực hiện việc hợp nhất dễ dàng, ví dụ: 'svn merge -c 100 $ someBranchName' – mwilson

+0

Vâng, tôi có một biến có danh sách tệp trong thư mục. Ví dụ: tôi có một biến được gọi là $ directorysnapshot = dir -r 'path' có danh sách tất cả các tệp trong thư mục đó và tôi muốn giữ cùng một danh sách. Tôi không thể có biến đó xác định lại mỗi lần trong quá trình khởi động vì một số tệp có thể đã thay đổi kể từ đó. – GwFiles

5

Để lưu trữ:

$variable|export-clixml -path $Location 

Để lấy:

$variable = import-clixml -path $Location 

Đặt rằng trong một chức năng nếu bạn muốn nó, một cái gì đó như:

function LoadTHEvariable($location) 
{ 
    $global:variable = import-clixml -path $Location 
} 

$ vị trí rõ ràng chứa nơi này trong hệ thống tệp nơi bạn muốn lưu biến.

2

Cân nhắc sử dụng biến môi trường.

+2

Lưu ý: Các biến môi trường không tồn tại trong quá trình khởi động lại trừ khi được thiết lập với SETX. – Iszi

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