当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 Active Directory 中查找任何电子邮件地址或代理地址

作者:精品下载站 日期:2024-12-14 08:13:59 浏览:16 分类:玩电脑

在 Active Directory 中查找任何电子邮件地址或代理地址


这是对 Exchange 或统一通信管理员的另一个常见请求。通常有人会过来问:“谁有这个电子邮件地址?”地址可以是许多不同类型的对象之一。用户邮箱、共享邮箱、通讯组列表、公用文件夹、联系人或资源都可以包含该特定电子邮件地址。 Exchange 2010 中的 Exchange 管理控制台存在问题,不允许您仅查找主电子邮件地址。 Exchange 2013 和 Office 365 Exchange 管理中心确实允许您通过“高级搜索”>“电子邮件地址”进行搜索,但不允许通配符搜索,并且您必须单独搜索每种类型(邮箱、组、资源、联系人)。有时也可能会分配重复的地址,因为直接访问 Active Directory 确实允许重复的电子邮件地址,从而导致传递失败。如果您只是从 Exchange 的角度来看,那么 Exchange commandlet 就可以正常工作。您可能需要使用 Active Directory commandlet,它将搜索 Exchange 中未启用的项目。以下是示例以及功能示例,可让您将来快速查找一个或多个电子邮件地址。

交换命令行开关
步骤 #1:以下 Exchange commandlet 是查找特定电子邮件地址或电子邮件地址的一部分的最简单方法。这将在 Exchange 中查找与您使用 -eq 或使用 -like 时的电子邮件部分放入过滤器中的电子邮件地址完全匹配的任何对象。

Get-Recipient [email protected]

Get-Recipient -Filter {EmailAddresses -like "*emailportion*"}

步骤 #2:以下示例重点介绍了针对并返回特定 Exchange 对象类型的各个 commandlet。您可以用 -like 替换 -eq 以包含通配符。

Get-Mailbox -Filter {EmailAddresses -eq "[email protected]" -or WindowsEmailAddress -eq "[email protected]"}

Get-MailboxContact -Filter {EmailAddresses -eq "[email protected]" -or WindowsEmailAddress -eq "[email protected]"}

Get-DistributionGroup -Filter {EmailAddresses -eq "[email protected]" -or WindowsEmailAddress -eq "[email protected]"}

Get-MailUser -Filter {EmailAddresses -eq "[email protected]" -or WindowsEmailAddress -eq "[email protected]"}

Active Directory Commandlet
前期步骤:在继续之前,您可能需要在旧版本的 PowerShell 上导入 Active Directory commandlet。请查看步骤 #4,了解也适用于 Office 365 的 Exchange commandlet。

Import-Module ActiveDirectory

步骤#1A:以下示例将查找与您在过滤器中放置的电子邮件地址完全匹配的任何活动目录对象。在本例中为 [email protected]

Get-ADObject -Properties mail, proxyAddresses -Filter {mail -eq "[email protected]" -or proxyAddresses -eq "smtp:[email protected]"}

步骤#1B:有时您可能只想搜索电子邮件地址的一部分。也许您不知道所使用的确切拼写或域,并且您想获取每一个相似的拼写或域。该过滤器不仅会抓取 smtp 地址,还会抓取其他类型,例如 x500: eum: sip: 等。

Get-ADObject -Properties mail, proxyAddresses -Filter {mail -like "*emailportion*" -or proxyAddresses -like "*emailportion*"}

步骤#1C:第三个选项是使用 LDAP 查询来查找匹配的对象。以下 LDAP 查询使用 |作为 OR 语句来查找 mail 和 proxyAddresses 属性中的地址。

Get-ADObject -LDAPFilter "(|([email protected])(proxyAddresses=smtp:[email protected]))"

步骤 #1D:以下 LDAP 查询在搜索中添加通配符,如果您不知道具体信息,它还允许您查找电子邮件地址的一部分。

Get-ADObject -LDAPFilter "(|(mail=*emailportion*)(proxyAddresses=*emailportion*))"

步骤#2:下一步我将向您展示如何搜索可能存在的不同类型的电子邮件地址。这些类型可能是 x500: eum: sip: 等。您所需要做的就是将前缀和电子邮件部分放入 proxyAddresses 过滤器中。此示例查找 [email protected] 的 sip 地址。

Get-ADObject -Properties proxyAddresses -Filter {proxyAddresses -eq "sip:[email protected]"}

步骤#3:这里我们创建一个函数,它接受输入来查找任何类型的电子邮件地址。我利用 -like 和通配符来捕获所有可能的类型。您可以简单地在 PowerShell 中创建该函数,以便稍后能够轻松检查任何地址。

function Get-EmailAddress
{
	[CmdletBinding()]
	param
	(
		[Parameter(Mandatory = $True,
				   ValueFromPipeline = $True,
				   ValueFromPipelineByPropertyName = $True,
				   HelpMessage = 'What e-mail address would you like to find?')]
		[string[]]$EmailAddress
	)
	
	process
	{		
		foreach ($address in $EmailAddress)
		{
			Get-ADObject -Properties mail, proxyAddresses -Filter "mail -like '*$address*' -or proxyAddresses -like '*$address*'"
		}
	}
}

与我的所有帖子一样,我期待您在您的环境中遇到任何问题或场景。如果您有任何疑问请在下面留言。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯