Powershell脚本是否仅使用电子邮件地址将用户从.csv添加到A/D组?

Powershell脚本是否仅使用电子邮件地址将用户从.csv添加到A/D组?,powershell,active-directory,exchange-server-2010,Powershell,Active Directory,Exchange Server 2010,脚本正在工作,但是它无法在AD中找到具有电子邮件地址的用户。您需要首先解析与该电子邮件地址匹配的ADUser对象,-Identity参数不会基于ADUser的EmailAddress字段自动解析。假设在AD中的用户对象上正确设置了EmailAddress属性,并且假设CSV中电子邮件地址的列名为ExternalEmailAddress,则应该可以: Import-CSV "C:\users\Balbahagw\desktop\test1.csv" | Foreach-Object {

脚本正在工作,但是它无法在AD中找到具有电子邮件地址的用户。

您需要首先解析与该电子邮件地址匹配的
ADUser
对象,
-Identity
参数不会基于
ADUser
EmailAddress
字段自动解析。假设在AD中的用户对象上正确设置了
EmailAddress
属性,并且假设CSV中电子邮件地址的列名为
ExternalEmailAddress
,则应该可以:

Import-CSV "C:\users\Balbahagw\desktop\test1.csv" | 
  Foreach-Object {
    $aduser = Get-ADUser -Filter { EmailAddress -eq $_.'EmailAddress' }
    if( $aduser ) {
      Write-Output "Adding user $($aduser.SamAccountName) to groupname"
      Add-ADGroupMember -Identity tech-103 -Members $aduser
    } else {
      Write-Warning "Could not find user in AD with email address $($_.EmailAddress)"
    }
  }
请注意,如果ADUser未设置电子邮件地址,您将无法将该广告用户与电子邮件进行匹配

以下是
添加ADGroupMember
的文档,您可能需要阅读这些文档以了解更多信息:

编辑:发现使用括号和$PSitem有些奇怪,所以我将其更改为使用基于字符串的筛选器


编辑2:找到了在基于括号的
-Filter
中使用变量不起作用的原因(我最初就是这样写的),事实上,在编写脚本时不建议这样做:

错误消息准确地告诉您出了什么问题。您想要-成员而不是-用户。在powershell提示符下键入:
Get Help Add ADGroupMember-Detailed
Dude,不要发明不存在的参数。PowerShell倾向于对此提出异议。在此处阅读cmdlet:>在域下找不到我尝试导入的对象,而不是抨击用户误解API,也许可以尝试用他们如何正确操作来回答问题,并解释错误所在。我收到一个新错误,即在类型的对象中找不到电子邮件地址不确定您正在运行的AD cmdlet或Powershell的哪个版本,您可以尝试将
-Properties-EmailAddress
参数添加到
Get-ADuser
cmdlet。但是我上面写的代码对我有效,而不需要指定额外的EmailAddress参数。Nvm。。。命令成功了!但是脚本找不到电子邮件地址。但是,当我打开exchange控制台并运行get aduser时,电子邮件地址就在那里……脚本找不到电子邮件地址是什么意思?是否输出“警告:在电子邮件地址为的广告中找不到用户…”是。脚本运行正常,但输出显示警告:无法在带有电子邮件地址的广告中找到用户。我使用了get-aduser-identity-user-properties-emailaddress命令,电子邮件就在那里
Import-CSV "C:\users\user\desktop\test1.csv" | Foreach-Object {
  $aduser = Get-ADUser -Filter "EmailAddress -eq '$($_.EmailAddress)'"
  if( $aduser ) {
    Write-Output "Adding user $($aduser.SamAccountName) to groupname"
    Add-ADGroupMember -Identity groupname -Members $aduser
  } else {
    Write-Warning "Could not find user in AD with email address $($_.EmailAddress)"
  }
}