我尝试将群组分配给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。
任何形式的帮助世界都会受到赞赏。
答案 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
}
}