2016-11-25 67 views
0

我遇到轻微问题。更新AD信息字段中的一行

我们有一个PowerShell脚本,用于在AD的'Notes:'字段中设置到期日期。

我想要做的是能够删除/更新此w/o删除该领域的其他数据。的

实施例“注意:”字段(即用户X):

GR1234567890 expires on 20251125 
END 

如果我使用以下代码来尝试和分离的一切,但在它开始GR行。

$UserName = Get-ADUser -Filter {SAMAccountName -eq "X"} -Properties Info 
$UserName.Info | Select-String -Pattern 'GR[\s\S].+' -NotMatch 

我得到一个“完全匹配”,根本没有输出。

如果我删除-NotMatch,我会得到一个完整匹配和'Notes:'字段的完整输出。

我已经尝试了一些RegEx在线测试人员的RegEx,那里它的工作方式和预期的一样。它就像是在穿越管道时在输出上没有LF/CR或一些奇怪的编码...

我可以做一个匹配的GR,一个日期和一切之间我猜...但是id喜欢知识为了知道上述想法是不可能的还是完全错误的(RegEX不是我最强的诉讼)。

+1

要在字符串/行的开头匹配'GR',请使用'^ GR''。 GR [\ s \ S]。+''匹配字符串中任意位置的'GR','[\ s \ S]'匹配任何char和'。+'匹配任何1+个字符。但是,问题出在Powershell代码上。 –

+0

我认为[\ s \ S]会匹配任何空格和无空格字符“永远”(+),直到LF或CR(。)出现? – Jonas

+1

不,'GR [\ s \ S] +'会,你量化*点*。 –

回答

1

问题确实是Wiktor指出的代码本身。他的帽子。

$UserName.Info -Replace '^GR.+' 

将删除我想要删除的行。