Exchange的PowerShell中关于Filter的写法

这篇文章简单说一下Exchange的PowerShell中,Filter的用法,不过相信看完的同学以后可能不会用这个东西………………虽然这么说,但是毕竟是一个新的选择,大家可以学习一下。

首先我们看一个输出,我们看看在Exchange2010中,get-user有哪些属性可以做筛选

[PS] E:\>Get-User zhangpengliang|select *
正在创建新会话来隐式远程处理“Get-User”命令...

RunspaceId               : 2429e504-c00b-4f51-8725-a65e35221181
IsSecurityPrincipal      : True
SamAccountName           : zhangpengliang
Sid                      : S-1-5-21-2564635362-2982989232-1758174225-30968
SidHistory               : {}
UserPrincipalName        : [email protected]
ResetPasswordOnNextLogon : False
CertificateSubject       : {}
RemotePowerShellEnabled  : True
WindowsLiveID            :
NetID                    :
UserAccountControl       : PasswordNotRequired, NormalAccount, DoNotExpirePassword
OrganizationalUnit       : tech.xxxx.com/IT支持部
IsLinked                 : False
LinkedMasterAccount      :
AssistantName            :
City                     :
Company                  : xxxx
CountryOrRegion          :
Department               : x
DirectReports            : {}
DisplayName              : 张鹏亮
Fax                      :
FirstName                : 鹏亮
HomePhone                :
Initials                 :
LastName                 : 张
Manager                  : tech.xxxx.com/xxxxxxxx
MobilePhone              : 15134234
Notes                    :
Office                   : xxx-xxx-IT支持部
OtherFax                 : {}
OtherHomePhone           : {}
OtherTelephone           : {}
Pager                    :
Phone                    : 0000
PhoneticDisplayName      :
PostalCode               :
PostOfficeBox            : {}
RecipientType            : UserMailbox
RecipientTypeDetails     : UserMailbox
SimpleDisplayName        :
StateOrProvince          : 北京
StreetAddress            :
Title                    : 运维工程师
UMDialPlan               :
UMDtmfMap                : {emailAddress:975, reversedPhone:0000, reversedPhone:23879001151, lastNameFirstName:, firstN
                           ameLastName:}
AllowUMCallsFromNonUsers : SearchEnabled
WebPage                  :
TelephoneAssistant       :
WindowsEmailAddress      : [email protected]
UMCallingLineIds         : {}
SeniorityIndex           :
VoiceMailSettings        : {}
IsValid                  : True
ExchangeVersion          : 0.10 (14.0.100.0)
Name                     : 张鹏亮
DistinguishedName        : CN=张鹏亮,OU=公司,DC=tech,DC=xxxx,DC=com
Identity                 : tech.xxxx.com/xxxxx/张鹏亮
Guid                     : 45fd2d82-cee5-49f7-bf3a-5d2cf93923ef
ObjectCategory           : tech.xxxx.com/Configuration/Schema/Person
ObjectClass              : {top, person, organizationalPerson, user}
WhenChanged              : 2015/7/13 15:07:38
WhenCreated              : 2011/5/20 17:50:05
WhenChangedUTC           : 2015/7/13 7:07:38
WhenCreatedUTC           : 2011/5/20 9:50:05
OrganizationId           :
OriginatingServer        : IDCDC01.tech.xxxx.com

很多很多东西对吧?一般要筛特定用户或者特定信息,我的做法和习惯都是用管道。但是管道有个最大的问题:“效率低”。

微软申明,get-user支持使用filter方法来查询。filter查询是什么呢?

准确的说,这里用到的其实还是改进后的Opath查询。

我们来看看写法,可以看到写法还是很人性的,从阅读感上来说,接近自然语言。

可能有人觉得,这已经很复杂了呀,怎么可能算简单,但是你知道LDAP写法查询一个名字叫做aa的用户是怎么样的呢?

(&(&(|(&(objectCategory=person)(objectSid=*)(!samAccountType:1.2.840.113556.1.4.804:=3))(&(objectCategory=person)(!objectSid=*))(&(objectCategory=group)(anr=aa*)))

看到上面这种查询的鸟样子,你还会觉得OPath的filter麻烦么?

另外实际测试中,filter不太好用,也许是我技术水平有限,查询的时候出不了结果,但是用管道就没问题。

比如这一句,是可以查询出来没有问题的

Get-User -OrganizationalUnit tech.xxxx.com  -Filter {Title -like  ‘*经理*‘}

但是下面这个是有问题的,查不出来

Get-User -OrganizationalUnit xxxx  -Filter{distinguishedName -like ‘*支持*‘ }

看起来功能类似,不过写法比管道要复杂很多。在管道帮不了忙的时候,我们还多了一个新的选择,但是管道能用的时候,一般还是用管道吧~

时间: 2024-10-14 09:38:25

Exchange的PowerShell中关于Filter的写法的相关文章

Powershell管理系列(十六)在PowerShell中添加Exchange管理单元

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 每次都找那个Exchange命令行管理程序太麻烦了,其实我们可以更简单,可以直接在PowerShell控制台内直接调用Exchange的管理命令就好了. 以下是Powershell调用各个版本的Exchange. Exchange 2007 Add-PSSnapin Microsoft.Exchange.Management.Po

在powershell中加载Exchange PowerShell模块

Exchange 2007 Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin; Exchange 2010 Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010; Exchange 2013 & 2016 Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn; 原文地址:https://blog

Exchange 2013 PowerShell创建自定义对象

PowerShell是一个基于对象的Shell,在写一行程序,脚本和函数时,給了我们很大的灵活性.当生成详细的报告时,我们需要从代码中自定义我们的数据输出,或者可以通过管道输送到其它的命令.我们还需要能够控制和定制代码的输出,这样我们可以合并来自多个源的数据到一个单独的对象.在这一节中,我们将学习下基本的构建定制的对象 首先我们要做的时创建一个邮箱对象的集合,将用来作为一组新的自定义对象的数据源: $mailboxes = Get-Mailbox 可以添加自定义的属性用于后续整个管道的对象属性,

Exchange 2013 PowerShell关键概念之一

介绍 当你的组织决定升级到Exchange Server 2013,去体验一些新的功能,如集成的电子邮件存档.发现功能以及高可用功能.不管你是否喜欢,你应该意识到PowerShell已经是Exchange服务器管理工具的一部分,而且你需要去学习一些基本脚本知识,从而建立一些脚本管理Exchange Server.这本书就是关于这方面的介绍.在这一章,将介绍一些PowerShell的一些核心概念,这些概念讲方便你学习这本书中提到的一些实例知识.当然,假如你的PowerShell比较熟悉,可以跳过本

Exchange 2013 PowerShell管理联系人&通讯组&资源邮箱

管理联系人 创建联系人,使用如下语法: New-MailContact -Alias rjones ` -Name "Rob Jones" ` -ExternalEmailAddress [email protected] ` -OrganizationalUnit sales 已启用邮箱的用户可以使用如下语法: New-MailUser -Name 'John Davis' ` -Alias jdavis ` -UserPrincipalName [email protected]

Exchange 2013 PowerShell新建&修改&删除邮箱

在我们日常使用Exchange Management Shell最多的应该就是邮箱的管理了.在这一节中,将主要介绍下在Exchange中使用语法命令在组织中创建.更新和删除邮箱. 先来看一个示例: 1.  我们可以使用Exchange Management Shell创建一个启用了邮箱功能的AD账户.语法如下: $password = ConvertTo-SecureString -AsPlainText abc.123 -Force New-Mailbox -UserPrincipalName

Exchange 2013 PowerShell管理域或整个林的收件人范围

Exchange管理工具可以配置为使用特定的部分活动目录层次结构使用特定的收件人范围.当你设置收件人范围为活动目录中的一个位置,例如一个域或者一个组织单元,Exchange Management Shell仅仅允许你查看指定范围内的收件人信息.在这一节,我们来看看使用Exchange Management Shell如何设定收件人范围. 如何做到这一点呢? 可以在Exchange Management Shell中使用Set-AdServerSettings命令来设置一个收件人范围.例如,设置当

Exchange 2013 PowerShell手动配置远程PowerShell连接

介绍 在Exchange 2007的时候,微软就推出了一套全新的基于Shell的管理工具:PowerShell V1,而且所有的图形化界面也是建立在这种技术之上的. 到了Exchange 2010,PowerShell更紧密的集成在产品中,Exchange 2010使用的是PowerShell V2,很大程度上依赖于其新的远程架构.即使你的服务器在本地或云端,都可以方便的使用这套管理工具. 在Exchange 2013中,使用的是PowerShell V3,有了更多的命令以及核心功能改变.在20

PowerShell 中Snapin和Module

大家在运用powershell的时候经常需要导入Snapin和Module来帮助完成一些运维操作. 比如以下两种操作: 1我们通过调用活动目录Module来管理用户 2 通过导入Exchange的Snapin来完成对邮箱的管理 但什么是Snapin和Module呢? 从上面的举例来看两者都是powershell的扩展.在MSDN上Snapin翻译为:"管理单元",Module翻译为"组件". Snapin是PowerShell 1.0中引入的,Module是Powe