通过电子邮件查找AD用户

时间:2016-09-28 09:27:56

标签: powershell active-directory

我正在尝试从具有特定电子邮件地址的活动目录中获取用户。

我有一个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
}

我收到了所有电子邮件的列表。

代码有什么问题?

1 个答案:

答案 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