【问题标题】:Add multiple users to multiple groups from one import csv (another follow up)从一个导入 csv 将多个用户添加到多个组(另一个跟进)
【发布时间】:2014-05-05 07:42:23
【问题描述】:

首先我必须说我已经有this 和this 线程,但无法从这些线程中找出答案。

我有一个如下所示的 CSV 文件:

Username,Groups
User01,Group01;Group02;Group03
User02,Group10;Group24;Group08
User03,Group13;Group02;Group42

等等等等...总共有数百个用户和数百个不同的组,因此手动将单个用户和/或组拆分到自己的行并不是一个真正的选择。

我无法弄清楚如何使用 foreach 处理行的逻辑,同时使用不同的分隔符将导入的 CSV 两次拆分,然后再对每个用户的组 再次进行 foreach。有什么想法吗?

【问题讨论】:

  • 请您澄清一下您要如何处理此 CSV 文件中的数据?您的问题的描述有点令人困惑,因为它更多地解释了您认为行不通的事情,而不是清楚地解释您正在尝试做什么。谢谢。
  • 我正在尝试将用户批量添加到 AD 组,例如 User01 到 Group01、Group02 和 Group03,然后 User02 到 Group10、Group24 和 Group08 等。
  • CSV 格式总是这样(用户名、组)还是文件格式不同?
  • 我可以更改逗号分隔符并替换我猜的分号,但为了论证的缘故,我们假设这是格式。

标签: powershell csv active-directory


【解决方案1】:

您可以在; 字符上拆分组,因此如果您想将用户添加到组中,请使用:

$src = Import-Csv yourfile.csv
foreach($line in $src){
    $user = $line.Username
    $groups = $line.Groups -split ";"
    foreach($group in $groups){
        Add-ADGroupMember -Identity $group -Members $user
        # other code which uses $group and $user
    }
}

【讨论】:

  • 成功了,谢谢!使用 split 可以避免再次解析单元格中列出的每个组。显然我想这种方式太复杂了。
【解决方案2】:

你可能想要类似的东西

$Line = import-csv yourfile.csv
#Skip first line here
 foreach ($Data in $Line)
 {
  $User = $Data.v1
  $Group1 = $Data.v2
  $Group2 = $Data.v3
  $Group3 = $Data.v4

  write-host "User: "$User
  write-host "Group1: "$Group1
  write-host "Group2: "$Group2
  write-host "Group3: "$Group3
  Write-Host ""
 }

【讨论】:

  • 呃,我是不是错过了什么……?我正在与 PowerShell 合作。
  • 抱歉,因为另一个问题,我在 PHP 模式下。
猜你喜欢
  • 1970-01-01
  • 2014-02-09
  • 2023-02-01
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多