2016-09-22 37 views
0

我试图将组分配给Active Directory中的用户。在一个简单的情况下,它通过CSV文件进行循环。但是,在我的情况下,我的csv是不同的。 csv的示例如下。Powershell活动目录用户使用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”,金融,人力资源,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。

任何形式的帮助世界被赞赏。

+1

“A; B ; c“-split”;“ – dugas

回答

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 
    } 
} 
+0

感谢Mathias,您的解决方案奏效。从来没有想过它是这样的。再次感谢你。 – metho