2012-08-16 17 views
10

Chcę przekazać listę wartości rozdzielonych przecinkami do skryptu jako część pojedynczego przełącznika.Powershell usuwa przecinek z argumentu programu

Oto program.

param(
    [string]$foo 
) 

Write-Host "[$foo]" 

Oto przykład użycia

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

spodziewałbym wyjście tego programu jest „[jeden, dwa, trzy]”, ale zamiast tego jest powrót „[jeden dwa trzy]” . Jest to problem, ponieważ chcę przecinać wartości za pomocą przecinków.

Dlaczego program Power Shell usuwa przecinki i co należy zmienić, aby je zachować?

Odpowiedz

23

Przecinek to specjalny symbol w powłoce powershell oznaczający separator tablic.

Wystarczy umieścić argumentów w cudzysłowie:

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

Alternatywnie można „cytat” przecinek:

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

Dziękuję. Tego właśnie szukałem. – StaticMethod

3

ująć ją w cudzysłów tak interpretuje ją jako jedną zmienną, a nie comma- lista rozdzielonych trzech:

PS> \ inputTest.ps1 -foo "jeden, dwa, trzy"

.
3

następujące opcje są dostępne

  1. Cytaty wokół wszystkich argumentów (')

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

  2. ucieczka charakter PowerShell przed każdym przecinkiem (grób-akcent (`))

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

Podwójne cytaty wokół argumentów niczego nie zmieniają!
Pojedyncze wyceny eliminuj rozwijanie.
Ucieczka znak (grób-akcent) eliminuje rozszerzenie następnego znaku

1

jeśli przekazywania parametrów z pliku wsadowego, a następnie enclse swoje params jak poniżej "" "Param1, Param2, param3, Param4" ""

Powiązane problemy