2009-04-10 40 views
5

Có thể gán kết quả của câu lệnh chuyển đổi cho một biến hay không.Powershell v1: Có thể gán kết quả của câu lệnh switch cho biến không?

Ví dụ, thay vì:

switch ($Extension) 
    { 
     doc {$Location = "C:\Users\username\Documents\"; break} 
     exe {$Location = "C:\Users\username\Downloads\"; break} 
     default {$Location = "C:\Users\username\Desktop\"} 
    } 

Có thể làm điều gì đó tương tự như:

$Location = 
{ 
    switch ($Extension) 
    { 
     doc {"C:\Users\username\Documents\"; break} 
     exe {"C:\Users\username\Downloads\"; break} 
     default {"C:\Users\username\Desktop\"} 
    } 
} 

Cố gắng kết quả trên trong $ vị trí chứa toàn bộ khối mã như một String.

Trả lời

7

Đối với V1, tôi sẽ bọc câu lệnh chuyển đổi trong một hàm.

function Get-DocumentLocation($Extension) 
{ 
    switch ($Extension) 
    { 
     doc {"C:\Users\username\Documents\"; break} 
     exe {"C:\Users\username\Downloads\"; break} 
     default {"C:\Users\username\Desktop\"} 
    } 
} 

$Location = Get-DocumentLocation $extension 
+0

Ngoài ra, mã gốc nhận được một chuỗi mã vì bạn tạo một ScriptBlock ({switch() ...}), nhưng bạn không gọi nó: & {switch() ...} – JasonMArcher

2

Công việc sau có hoạt động không?

$Location = (switch ($Extension) { 
       doc {"C:\Users\username\Documents\"; break} 
       exe {"C:\Users\username\Downloads\"; break} 
       default {"C:\Users\username\Desktop\"} 
      }) 

Hoặc có thể

$Location = $(switch ($Extension) { 
       doc {"C:\Users\username\Documents\"; break} 
       exe {"C:\Users\username\Downloads\"; break} 
       default {"C:\Users\username\Desktop\"} 
      }) 

Đừng có v1 đây để kiểm tra, ngay bây giờ nhưng tôi nghĩ rằng có thể làm việc.

+0

Aren ' hai lựa chọn của bạn giống nhau không? –

+0

Không còn nữa, cảm ơn :) – Joey

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