Как сопоставить столбец с другим значением столбца из CSV-файла? - PullRequest
0 голосов
/ 23 мая 2019

Предположим, у меня есть CSV-файл следующим образом:

csv

role    member
role1   memberA
role1   memberB
role2   memberC
role3   memberX
role3   memberY
role3   memberC

Я хочу добавить в базу данных всех участников ролей в базе данных

$csvR = (Import-Csv $csvFile).role

        foreach ($Role in $csvR)
        {
            foreach ($Member in $Role) 
            {   
                & ".\AddMembers.ps1" -AddtoDatabaseOnOneServer "$Role" "$Member" "$DatabaseName" "$ServerInput"
            } 
        }

Признает ли этот цикл, например, добавление memberA к role1, memberB к role1, memberC к role2 и т. Д.? Другими словами, правильный ли этот внутренний цикл: foreach ($Member in $Role)

1 Ответ

1 голос
/ 23 мая 2019

Вот демонстрация того, как использовать командлет Group-Object для итерации по элементам в импортированном CSV-файле по группированному свойству. [ ухмылка ]

в строке give person, вы можете либо добавить свой вызов в свой сценарий для каждого человека, либо собрать имена всех людей для этого .Role и добавить их всех сразу.

# fake reading in a CSV file
#    in real life, use Import-CSV
$InStuff = @'
role, member
role1, memberA
role1, memberB
role2, memberC
role3, memberX
role3, memberY
role3, memberC
'@ | ConvertFrom-Csv

$GroupedIS = $InStuff |
    Group-Object -Property Role

foreach ($GIS_Item in $GroupedIS)
    {
    foreach ($GG_Item in $GIS_Item.Group)
        {
        'give person [ {0} ] the role [ {1} ]' -f $GG_Item.Member, $GG_Item.Role
        }
    }

вывод ...

give person [ memberA ] the role [ role1 ]
give person [ memberB ] the role [ role1 ]
give person [ memberC ] the role [ role2 ]
give person [ memberX ] the role [ role3 ]
give person [ memberY ] the role [ role3 ]
give person [ memberC ] the role [ role3 ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...