2015-06-18 22 views
6

Tôi đang sử dụng kịch bản PowerShell để thiết lập một số môi trường variable--Cách tự động tạo biến môi trường?

$env:FACTER_Variable_Name = $Variable_Value 

facter là cho việc sử dụng chúng trong các kịch bản múa rối.

Vấn đề của tôi là - tên biến và giá trị biến cả hai đều là động và được đọc từ tệp văn bản.

Tôi cố gắng để sử dụng

$env:FACTER_$Variable_Name = $Variable_Value 

Nhưng $ không phải là cú pháp có thể chấp nhận. Khi tôi đính kèm nó trong dấu ngoặc kép, giá trị biến không được thông qua. Bất kỳ đề xuất nào về cách sử dụng nó theo cách động.

Cảm ơn trước

+0

sử dụng '$ ($ Variable_Value)' có thể trợ giúp? –

+0

Xem câu trả lời của tôi cho câu hỏi này: [Tái sử dụng biến môi trường trong Đường dẫn] (http://superuser.com/questions/882837/reuse-of-environment-variables-in-path) – beatcracker

Trả lời

8

[Environment]::SetEnvironmentVariable("TestVariable", "Test value.", "User")

Cú pháp này cho phép các biểu tại địa điểm của "TestVariable", và nên là đủ để tạo ra một biến môi trường hồ sơ địa phương. Tham số thứ ba có thể là "Quy trình", điều này làm cho các vars mới hiển thị trong Get-ChildItem env: hoặc "Máy" - điều này yêu cầu quyền quản trị để đặt biến. Để lấy một tập hợp biến như thế này, hãy sử dụng [Environment]::GetEnvironmentVariable("TestVariable", "User") (hoặc phạm vi kết hợp nếu bạn chọn một biến khác).

+0

Cảm ơn bạn đã trả lời Vesper .. Nhưng nó sẽ không tạo ra một biến vĩnh viễn thay vì một biến tạm thời? – user3783125

+0

Tôi đoán mức độ quá trình nên tạo ra một temoporary? – user3783125

+0

Nếu biến của bạn có phạm vi người dùng, biến đó sẽ là "vĩnh viễn", ít nhất là khởi động lại, cho đến khi bị vô hiệu hóa. Nếu biến của bạn sẽ là phạm vi quá trình, nó sẽ là tạm thời nhưng có sẵn nếu bạn khởi chạy một quá trình ('cmd.exe' được thử nghiệm) từ trong quá trình Powershell nơi biến này được khai báo. – Vesper

6

Trong PowerShell tinh khiết, một cái gì đó như thế này:

$Variable_Name = "foo" 
$FullVariable_Name = "FACTER_$Variable_Name" 
$Variable_Value = "Hello World" 
New-Item -Name $FullVariable_Name -value $Variable_Value -ItemType Variable -Path Env: 

Tôi đang sử dụng lệnh New-mục cmdlet để thêm biến mới, chỉ cần có để xác định -itemtype-path

1

On Powershell 5, để thiết lập tự động một biến môi trường trong vỏ hiện tại tôi sử dụng Set-Item:

>$VarName="hello" 
>Set-Item "env:$VarName" world 
>$env:hello 
world 
> 

và tất nhiên để tồn tại các biến tôi sử dụng C# [Environment]::SetEnvironmentVariable("$VarName", "world", "User")

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