2012-08-16 35 views
10

我想將逗號分隔的值列表作爲單個開關的一部分傳入腳本。Powershell正在從程序自變量中移除逗號

這是程序。

param(
    [string]$foo 
) 

Write-Host "[$foo]" 

下面是使用例子

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

我希望這個程序的輸出爲「[一,二,三]」,而是它返回「[一二三]」 。這是一個問題,因爲我想使用逗號來消除這些值。

爲什麼powershell刪除逗號,以及爲了保存它們需要更改哪些內容?

回答

23

逗號是powershell中用於表示數組分隔符的特殊符號。

只要把論點報價:

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

另外,您可以「報價」逗號:

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

謝謝。這是我正在尋找的。 – StaticMethod 2012-08-16 16:43:38

3

其用引號包圍,因此將它解釋爲一個變量,而不是一個逗號三個分隔的列表:

PS> \ inputTest.ps1 -foo 「一個,兩個,三個」

3

以下選項可供選擇

  1. 行情周圍的所有參數(')

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

  2. 每個逗號前PowerShell的轉義字符(嚴重口音的(`))

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

雙引號圍繞參數不會改變任何東西!
單引號消除擴大。
轉義字符(嚴重口音的)消除下一個字符的擴大

1

如果從一個批處理文件傳遞參數,然後enclse您的PARAMS如下 「」「參數1,參數2,參數3,Param4」「」