我正在尝试从具有特定电子邮件地址的活动目录中获取用户。
我有一个CSV文件,其中包含电子邮件。
$data = import-csv -path .\are.csv -delimiter +
foreach($i in $data)
{
get-aduser -filter {UserPrincipalName -like '$i.email'}
}
我的问题是,我没有得到任何输出。没有错误,没有数据。当我用其中一个电子邮件地址替换$i.email
时,我会获得一个用户的正确用户信息。所以硬编码很有效。
当我这样做时:
foreach($i in $data)
{
$i.email
}
我收到了所有电子邮件的列表。
代码有什么问题?
答案 0 :(得分:1)
您的变量位于单引号内,因此不会填充。您必须有三个选项来解决这个问题:
使用带有子表达式的双引号 $()
:
UserPrincipalName -like "$($i.email)"
只需省略引号:
UserPrincipalName -like $i.email
最后你可以使用格式字符串(即使是单引号):
UserPrincipalName -like ('{0}' -f $i.email)
下面是一个示例,演示使用Write-Host
cmdlet传递的实际值:
$data =
@'
email, id
myname@web.de, 1
'@ | convertfrom-csv
foreach($i in $data)
{
Write-Host '$i.email' # This is your current approach
Write-Host "$($i.email)"
Write-Host $i.email
Write-Host ('{0}' -f $i.email)
}
<强>输出:强>
$i.email # This is the output of your current approach
myname@web.de
myname@web.de
myname@web.de