2017-02-17 46 views
-1

對不起,我仍然是REGEX新手。Powershell和REGEX從LDAP查詢中提取信息

我使用PowerShell創建一個腳本,我需要建立一系列的IF THEN語句

我有一個包含以下LDAP查詢的數組:

(&(objectCategory=user)(objectClass=user)(PhysicalDeliveryOfficeName=XXXX, XX)(sAMAccountName=%LogonUser%)) 

(&(objectCategory=user)(objectClass=user)(PhysicalDeliveryOfficeName=XXXX, XX)(sAMAccountName=%LogonUser%)) 

(&(objectCategory=user)(objectClass=user)(PhysicalDeliveryOfficeName=*XXXXXX*)(sAMAccountName=%LogonUser%)) 

(&(objectCategory=user)(objectClass=user)(scriptpath=XXXXX*.XXX)(sAMAccountName=%LogonUser%)) 

使用for循環和REGEX,我希望能夠在(和=

之間拉取所有提及的「PhysicalDeliveryOfficeName」和「scriptpath」。另外在腳本中,我希望能夠將=和)

有沒有辦法做到這兩個?他們不必在同一個陳述中。兩個單獨的語句都很好

X代表城市,州和腳本查詢的情況下的文件名。然而,正如你所看到的,這座城市和國家並不總是一模一樣。

在此先感謝您的幫助

+1

顯示我們預期的輸出 –

+1

歡迎來到Stackoverflow,人們很樂意幫助處理腳本錯誤或問題,但請注意,這不是一個代碼寫入服務。分享您嘗試過的錯誤消息。包括預期產出也很有幫助。 – user4317867

+0

我可以自己編寫Powershell腳本,我對REGEX不太好。我只想用正則表達式來提取「PhysicalDeliveryOfficeName」,「PhysicalDeliveryOfficeName」,「PhysicalDeliveryOfficeName」,「scriptpath」。 – Brian

回答

0

這應該工作。

正則表達式:

(scriptpath|PhysicalDeliveryOfficeName)=(.+?)(?=\)) 

輸入:

(&(objectCategory=user)(objectClass=user)(PhysicalDeliveryOfficeName=XXXX, XX)(sAMAccountName=%LogonUser%)) 

(&(objectCategory=user)(objectClass=user)(PhysicalDeliveryOfficeName=XXXX, XX)(sAMAccountName=%LogonUser%)) 

(&(objectCategory=user)(objectClass=user)(PhysicalDeliveryOfficeName=*XXXXXX*)(sAMAccountName=%LogonUser%)) 

(&(objectCategory=user)(objectClass=user)(scriptpath=XXXXX*.XXX)(sAMAccountName=%LogonUser%)) 

輸出:

PhysicalDeliveryOfficeName=XXXX, XX 
PhysicalDeliveryOfficeName=XXXX, XX 
PhysicalDeliveryOfficeName=*XXXXXX* 
scriptpath=XXXXX*.XXX 

組:(對於第一匹配)

$0 = PhysicalDeliveryOfficeName=XXXX, XX => Full Match 
$1 = PhysicalDeliveryOfficeName 
$2 = XXXX, XX 

參見:https://regex101.com/r/thHmlq/3

+0

感謝您的幫助。這工作就像一個魅力! – Brian