私は多少の問題があります。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は私の最強の訴訟ではない)。
文字列/行の先頭に 'GR 'をマッチさせるには''^GR ''を使います。 '' GR [\ s \ S]。+ ''は文字列のどこでも 'GR 'にマッチし、' [\ s \ S] 'は任意の文字にマッチし、'。+ 'は任意の1+文字にマッチします。しかし、問題はPowershellコードにあります。 –
私はLFかCR(。)が出現するまで、[\ s \ S]は空白文字と空白文字を "forever"(+)にマッチさせると思っていましたか? – Jonas
いいえ、 'GR [\ s \ S] +'は*ドット*を数量化します。 –