您的位置:首页 > 运维架构 > Shell

Exchange的PowerShell中关于Filter的写法

2015-07-21 17:15 609 查看
这篇文章简单说一下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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: