2016-01-18 3 views
0

Я хочу, чтобы выполнить команду, которая выглядит следующим образом:Добавление/конкатенации строк Аргументы

# $IncludeTraits is a String[] 
$exe = "C:\Foo.exe"; 
$traits; 
foreach ($IncludeTrait in $IncludeTraits) 
{ 
    if ($IncludeTrait -ne $null -and $IncludeTrait -ne "") 
    { 
     $traits = $traits + "-trait `"$IncludeTrait`" " 
    } 
} 

& $exe $traits 

Последняя команда должна выглядеть следующим образом:

Foo.exe -trait "One" -trait "Two" -trait "Three" 

Если я вручную записать команду над ним работает, но не используя мой конкатенированный код строки. Как я могу заставить это работать с использованием конкатенации строк?

+0

что происходит, если вы пишете-вывод «$ ехе $ черты "Вы видите команду Foo.exe-пролив« Один »- пролив« Два »- пролив« Три », –

ответ

2

Не используйте конкатенацию строк. Соберите свои аргументы в массиве:

$traits = foreach ($IncludeTrait in $IncludeTraits) { 
    if ($IncludeTrait) { '-trait'; $IncludeTrait } 
} 

Затем запустите команду с этим массивом:

& $exe $traits 

или использовать splatting:

& $exe @traits 
Смежные вопросы