Powershell脚本是否仅使用电子邮件地址将用户从.csv添加到A/D组?
脚本正在工作,但是它无法在AD中找到具有电子邮件地址的用户。您需要首先解析与该电子邮件地址匹配的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 {
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)"
}
}