1

我需要创建将用户从列表(包含用户显示名称)添加到组的脚本我遇到的问题是:当我发出命令时:

PS C:\Users\pskwarek> foreach ($a in $csv) {(get-aduser -f "DisplayName -like 'Piotr Skwarek'").samaccountname}
pskwarek
pskwarek

但如果我使用 $a 变量它不起作用:

PS C:\Users\pskwarek> foreach ($a in $csv) {(get-aduser -f "DisplayName -like '$a.name'").samaccountname}

下一步我想将它传递给:

Add-adgroupMember -identity "groupname" -member samaccountname

但我无法迈出那一步

编辑

PS C:\Users\pskwarek> $csv
Name
----
Piotr Skwarek
Renata Skwarek
4

4 回答 4

2

您需要将 $a.name 放在子表达式中:

foreach ($a in $csv) 
{
    $user = Get-ADUser -Filter "DisplayName -like '$($a.name)'" 
    Add-ADGroupMember groupname -Members $user
}
于 2013-03-04T13:45:24.443 回答
0
foreach ($a in $csv) 
{
 $sb = [scriptblock]::create("DisplayName -like '*$a*'")
 (get-aduser -f $sb).SamAccountName
}
于 2013-03-04T13:47:35.300 回答
0

尝试这个:

foreach ($a in $csv) {(get-aduser -f ("DisplayName -like '{0}'" -f $a.name)).samaccountname}

您不能像以前那样直接在字符串中使用变量的成员。使用字符串格式(我建议的“-f”语法)总是有效的。另一种解决方案是使用临时变量来存储 $a.name

于 2013-03-04T13:47:50.460 回答
0

尝试这个:

$csv | % { Add-ADGroupMember -Identity "Groupname" -Member $_.Name  }
于 2013-03-04T13:43:35.183 回答