我的csv格式为
ln,fn
jones,bob
jagger,mick
我试图通过运行以下命令为这些用户从AD中获取邮件属性:
$names = import-csv .\names4.csv
FOREACH ($name in $names){
get-aduser -f {surname -eq "$name.ln" -and givenname -eq "$name.fn} -pr mail
}
这根本不会返回任何内容。如果我回显$ name.ln它会显示来自csv的用户名字列表,所以我不确定为什么上面的命令没有返回任何结果。
答案 0 :(得分:3)
在可扩展字符串的上下文中(即双引号),powershell解析器仅扩展引用,直到.
- 只需删除""
引号:
$names = Import-Csv .\names4.csv
foreach($name in $names){
Get-ADUser -Filter {Surname -eq $name.ln -and GivenName -eq $name.fn} -Properties mail
}
或者,将每个属性值分配给它自己的变量:
$names = Import-Csv .\names4.csv
foreach($name in $names){
$sn = $name.ln
$gn = $name.fn
Get-ADUser -Filter {Surname -eq $sn -and GivenName -eq $gn} -Properties mail
}
在您需要在可扩展字符串中取消引用属性的任何其他情况下,请使用$()
子表达式运算符:
"The last name is $($name.ln)"
但我建议不要使用ActiveDirectory模块,因为-Filter
块有一些嵌套表达式的怪癖