web-dev-qa-db-ja.com

Powershell Select-String -pattern -notMatch

行があります-

echo $LocalAdmins
    Administrator
    Domain-Administrator
    daemon
    SomeUser
  • 1行目と3行目は同じである必要がありますが、ドメイン管理者が存在しない場合があるため、ユーザーが3行目に隠れている可能性があるため、行を数えるだけでは効果がありません。

  • 4行目の文字列の変更。4行を超える場合もあれば、4行目がない場合もあります。

  • 行の位置が変わるかどうかはまだわかりません。

-notMatch "Administrator"、 "Domain-Administrator"、 "daemon"という文字列を取得する必要があります。つまり、このリストにあるユーザー名が必要です。

-andまたは()で複数の-notMatchを使用する方法はありますか?現在、私は-notMatchを1つだけ使用するコードに悩まされています。リストに2人以上のユーザーがいる可能性があるため、-Matchは使用できません。

$LocalAdmins | Select-String -pattern "Administrator" -notMatch
16
Phoneutria

このような?

$LocalAdmins | select-string -Pattern 'Administrator|daemon' -NotMatch | select -expa line

-patternREGEXを受け入れます。 |(または正規表現演算子)を使用して、ニーズに合わせて他の単語を追加します。

19
CB.

仮定して $LocalAdminsは、これを実行できる配列です。

$exclude = 'Administrator', 'Domain-Administrator', 'daemon'
$LocalAdmins | Where-Object { $exclude -notcontains $_ }
2
Ansgar Wiechers