这篇文章简单说一下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 '*支持*' }
看起来功能类似,不过写法比管道要复杂很多。在管道帮不了忙的时候,我们还多了一个新的选择,但是管道能用的时候,一般还是用管道吧~