2017-02-17 43 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