2012-08-16 30 views
10

Tôi muốn chuyển một danh sách giá trị được phân cách bằng dấu phẩy vào một tập lệnh như một phần của một nút chuyển.Powershell đang xóa dấu phẩy khỏi đối số chương trình

Đây là chương trình.

param(
    [string]$foo 
) 

Write-Host "[$foo]" 

Dưới đây là ví dụ sử dụng

PS> .\inputTest.ps1 -foo one,two,three 

Tôi mong chờ kết quả của chương trình này là "[một, hai, ba]", nhưng thay vào đó nó đang trở lại "[một hai ba]" . Đây là một vấn đề bởi vì tôi muốn sử dụng dấu phẩy để phân định các giá trị.

Tại sao quyền hạn lại loại bỏ dấu phẩy và tôi cần thay đổi gì để bảo tồn chúng?

Trả lời

23

Dấu phẩy là một biểu tượng đặc biệt trong quyền hạn để biểu thị dấu tách mảng.

Chỉ cần đặt các đối số trong dấu ngoặc kép:

inputTest.ps1 -foo "one, two, three" 

Hoặc bạn có thể 'quote' dấu phẩy:

inputTest.ps1 -foo one`,two`,three 
+0

Cảm ơn bạn. Đây là những gì tôi đang tìm kiếm. – StaticMethod

3

Kèm theo nó trong dấu ngoặc kép để nó diễn giải nó như là một biến, không phải là một dấu phẩy- danh sách được phân tách gồm ba:

PS>. \ inputTest.ps1 -foo "một, hai, ba"

3

lựa chọn Sau đây là sẵn

  1. Quotes xung quanh tất cả đối số (')

    inputTest.ps1 -foo 'one,two,three'

  2. ký tự thoát Powershell của trước mỗi dấu phẩy (mộ-giọng (`))

    inputTest.ps1 -foo one`,two`,three

Dấu ngoặc kép xung quanh đối số không thay đổi bất cứ điều gì!
Báo giá đơn loại bỏ mở rộng.
thoát nhân vật (mộ-giọng) loại bỏ mở rộng của ký tự tiếp theo

1

nếu bạn đang đi qua các thông số từ một tập tin thực thi, sau đó enclse params của bạn như sau "" "param1, param2, param3, Param4" ""

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