2016-11-25 69 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.+' 

將刪除我想要刪除的行。