将Get-ADUser与Import-Csv一起使用,以便将来使用Set-ADUser更新用户

时间:2017-12-04 03:14:34

标签: windows powershell csv

在本项目结束时,我正在尝试使用CSV文件在AD中更新用户的个人详细信息。我打算使用Get-ADUser管道进入Set-ADUser

我目前的问题是使用Get-ADUser

从AD返回用户记录

我的CSV文件如下

?

我的PowerShell脚本看起来像这样

FirstName,LastName,DisplayName,CompanyName,EmailAddress
John,Doe,John Doe,Test Company,john.doe@company.com
Jane,Doe,Jane Doe,Test Company,jane.doe@company.com

返回的是

Import-Csv .\Users.csv | ForEach {

Write-Host $_.EmailAddress
Write-Host $_.DisplayName

"`"$($_.EmailAddress)`""

Get-ADUser -Filter { userPrincipalName -eq "`"$($_.EmailAddress)`""}
}

在不使用如下变量的情况下运行Get-ADUser,返回应该使用的用户帐户,而上面的代码则没有。

john.doe@company.com
John Doe
"john.doe@company.com"
jane.doe@company.com
Jane Doe
"jane.doe@company.com"

我哪里错了?

1 个答案:

答案 0 :(得分:1)

$ _是cmd-let返回的管道线或当前对象中当前值的变量。在Get-ADUser中使用$ _时,$ _将是从Get-ADUser cmd-let返回的对象。只需创建一个变量并在foreach循环中分配$ _.EmailAddress并将此变量传递给过滤器。

Import-Csv .\Users.csv | ForEach {
    $emailAddress = $_.EmailAddress
    Write-Host $_.EmailAddress
    Write-Host $_.DisplayName
    Get-ADUser -Filter { userPrincipalName -eq $emailAddress }
}