这篇文章简单说一下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 : zhangpengliang@tech.xxxx.com
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 : zpl@yiche.com
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 ‘*支持*‘ }
看起来功能类似,不过写法比管道要复杂很多。在管道帮不了忙的时候,我们还多了一个新的选择,但是管道能用的时候,一般还是用管道吧~
本文出自 “九叔-微软私有云” 博客,请务必保留此出处http://jiushu.blog.51cto.com/972756/1676800
Exchange的PowerShell中关于Filter的写法
原文地址:http://jiushu.blog.51cto.com/972756/1676800