PowerShell脚本,用于从电子邮件列表中获取员工编号

我有一个CSV文件中的电子邮件地址列表,我希望从该文件中获取导出到新CSV文件中的每一行的员工编号 . 我尝试使用PowerShell脚本但是我有点挣扎,并且想知道是否有人可以指出我正确的方向 .

Import-Module ActiveDirectory
Import-Csv 'C:\ps\EmailIDIFS.csv' | ForEach {
Get-ADUser -Filter "EmailAddress -eq '$($_email)'" -Properties Name, 
emailAddress, SAMAccountName, employeeNumber | `
Select Name, emailAddress, SamAccountName, employeeNumber | `
Export-CSV 'C:\ps\ADResults.csv' -NoTypeInformation
}

不幸的是,当我运行它时,我收到以下错误:

Get-ADUser:无法识别搜索过滤器在C:\ Users \ jfoote \ Nextcloud \ Local \ scripts \ ADEmployeeNumber.ps1:3 char:1 Get-ADUser -Filter“EmailAddress -eq'$($ _ email)'” -Properties名称,... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 〜/ ~~~~~~~~~~~~~~~~~~~~~~~分类信息:未指定:(:) [Get-ADUser],ADException FullyQualifiedErrorId:ActiveDirectoryServer:8254,Microsoft.ActiveDirectory . Management.Commands.GetADUser

回答(1)

2 years ago

看起来你只是错过了这一行的一段时期:

Get-ADUser -Filter "EmailAddress -eq '$($_email)'" -Properties Name, emailAddress, SAMAccountName, employeeNumber

$_email 应该是 $_.email (假设您的CSV文件中有一个名为"email"的 Headers ) .

请注意,也可以在 Identity 参数中使用电子邮件地址,这是默认参数 . 所以你可以像这样简化它:

Get-ADUser $_.email -Properties Name, emailAddress, SAMAccountName, employeeNumber

效果完全一样 . 它更容易阅读 .