Powershell和REGEX从LDAP查询中提取信息

时间:2017-02-17 17:53:19

标签: regex powershell

对不起这个问题,我仍然是一个REGEX新手。

我使用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.

有两种方法可以做到吗?他们不必在同一个声明中。两个单独的陈述是好的

X代表城市,州,并且在脚本路径的情况下查询文件名。但是,你可以看到城市和州并不总是相同的模式。

提前感谢您的帮助

1 个答案:

答案 0 :(得分: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