這篇文章簡單說一下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 '*支持*' }
看起來功能類似,不過寫法比管道要複雜很多。在管道幫不了忙的時候,我們還多了一個新的選擇,但是管道能用的時候,一般還是用管道吧~