在本项目结束时,我正在尝试使用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"
我哪里错了?
答案 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 }
}