Powershell Active Directory用户使用CSV到多个组

时间:2016-09-22 14:28:14

标签: powershell csv

我尝试将群组分配给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
}   

这略有不同,因为您可以看到我正在尝试处理具有多个名称的群组列,并且更糟糕的是,它们被";&#分开34; 即可。因此,当我运行脚本时,它会看到两个名称为一个。

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

我处于一个不幸的位置,因为我无法改变我收到的csv。

任何形式的帮助世界都会受到赞赏。

1 个答案:

答案 0 :(得分: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(版本3.0中引入了-split),您可以使用String.Split()方法:

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