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查詢。

wKioL1WuDXaS612cAACqEmrCrY4292.jpg

我們來看看寫法,可以看到寫法還是很人性的,從閱讀感上來說,接近自然語言。



wKiom1WuDCqjcYTpAAHvtrZa17g601.jpg


可能有人覺得,這已經很複雜了呀,怎麼可能算簡單,但是你知道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 '*支持*' } 


看起來功能類似,不過寫法比管道要複雜很多。在管道幫不了忙的時候,我們還多了一個新的選擇,但是管道能用的時候,一般還是用管道吧~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章