2016-11-25 13 views
0

私は多少の問題があります。AD情報フィールドの行を更新してください

ADの「Notes」フィールドに有効期限を設定するPowerShellスクリプトがあります。

私がやりたいことは、フィールド内の他のデータを削除しないでこれを削除/更新できるようにすることです。

例「注:」フィールド(すなわち、ユーザ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やいくつかのwierdエンコーディングがないようです...

私はマッチGR、日付とすべての間に私が推測することができる...しかし、知識のようなid上記の考えが不可能であるか全く間違っているかを知りたい(RegEXは私の最強の訴訟ではない)。

+1

文字列/行の先頭に 'GR 'をマッチさせるには''^GR ''を使います。 '' GR [\ s \ S]。+ ''は文字列のどこでも 'GR 'にマッチし、' [\ s \ S] 'は任意の文字にマッチし、'。+ 'は任意の1+文字にマッチします。しかし、問題はPowershellコードにあります。 –

+0

私はLFかCR(。)が出現するまで、[\ s \ S]は空白文字と空白文字を "forever"(+)にマッチさせると思っていましたか? – Jonas

+1

いいえ、 'GR [\ s \ S] +'は*ドット*を数量化します。 –

答えて

1

問題は確かにWiktorによって指摘されたコード自体でした。彼の帽子。

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

削除したい行が削除されます。

関連する問題