【问题标题】:Powershell Active Directory Users to Multiple Groups using CSV使用 CSV 将 Powershell Active Directory 用户添加到多个组
【发布时间】:2016-09-22 14:28:13
【问题描述】:

我正在尝试将组分配给 Active Directory 中的用户。在一个简单的情况下,它只是通过 CSV 文件循环的情况。但是,在我的情况下,我的 csv 是不同的。 csv示例如下。

tjone,Time,Jones,Time Jones,tim.jones@home.ac.uk,Time Jones,Home Work, Manager, Finance, Staff, "OU=Groups,DC=Home,DC=ac,DC=uk ",财务;HR,P@ssw0rd

脚本如下:

#Read the CSV file
$PathofCSV = "C:\Users\Administrator\Desktop\users.csv"

$Header = "sAMAccountName","givenName","sn","DisplayName","mail","cn","Company","Title","Department","OrgUnit","OU","Groups","Password"

$InfoCSV = import-csv $PathofCSV -Delimiter "," -Header $Header

ForEach ($user In $infoCSV)

{
Add-ADGroupMember -Identity $user.Groups -Members $user.sAMAccountName
}   

这略有不同,因为您可以看到我正在尝试处理具有多个名称的组列,更糟糕的是,它们由 ";" 分隔。因此,当我运行脚本时,它会将两个名称视为一个。

问题是,是否可以将这两个名称分开并处理它们,即从一列中分配两个或多个组名称。

我的处境很不幸,因为我无法更改收到的 csv。

感谢任何形式的帮助。

【问题讨论】:

  • "a;b;c" -split ";"

标签: powershell csv


【解决方案1】:

作为has already been pointed out in comments,使用-split 运算符:

foreach($user in $infoCSV)
{
    foreach($group in $user.Groups -split ';')
    {
        Add-ADGroupMember -Identity $group -Members $user.sAMAccountName
    }
}

如果这是 PowerShell 2.0(-split 是在 3.0 版本中引入的),您可以使用 String.Split() 方法:

foreach($user in $infoCSV)
{
    foreach($group in $user.Groups.Split(';'))
    {
        Add-ADGroupMember -Identity $group -Members $user.sAMAccountName
    }
}

【讨论】:

  • 感谢 Mathias,您的解决方案奏效了。没想到这么简单。再次感谢您。
猜你喜欢
  • 2019-06-11
  • 2022-01-02
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多