Манипулирование строкой в ​​foreach powershell - PullRequest
0 голосов
/ 26 сентября 2018

Вывод этого кода меня смущает.Я почти уверен, что это моя логика.

Я хочу пройтись по переменной $ stringToEdit и заменить текст 'replace' на элемент коллекции $ ip.

Выводдействительно дает три блока, как и ожидалось, но «замена» имеет ВСЕ три элемента.Я думал, что это должен быть только каждый элемент.Что я делаю неправильно?

Код ниже

$ip = @('172.168.1.1','172.168.3.1','172.168.2.1')
$stringToEdit = @"
    {
        address : replace
        interface : 'nic0'
        policy : 'allow'
        prefix : 32
    },
"@
$array = @()
$array = ForEach($entry in $ip) {
    $stringToEdit -replace "replace","$ip"
}
$array

Выход

{
    address : 172.168.1.1 172.168.3.1 172.168.2.1
    interface : 'nic0'
    policy : 'allow'
    prefix : 32
},
{
    address : 172.168.1.1 172.168.3.1 172.168.2.1
    interface : 'nic0'
    policy : 'allow'
    prefix : 32
},
{
    address : 172.168.1.1 172.168.3.1 172.168.2.1
    interface : 'nic0'
    policy : 'allow'
    prefix : 32
},

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

заменить $ ip на $ entry

$stringToEdit -replace "replace","$entry"
0 голосов
/ 26 сентября 2018

Вы используете неверную переменную в своем блоке foreach. Замените эту строку:

$stringToEdit -replace "replace","$ip"

На это:

$stringToEdit -replace "replace","$entry"
...