20

私は線を持っています -

echo $LocalAdmins
    Administrator
    Domain-Administrator
    daemon
    SomeUser
  • Domain-Administrator が存在しない状況が発生する可能性がありますが、1 行目から 3 行目は同じである必要があります。ユーザーが 3 行目に隠れている可能性があるため、単純に行を数えるだけでは役に立ちません。

  • ライン 4 の文字列が変更されます。ライン 4 がまったくない場合と同様に、4 つ以上のラインが存在する場合もあります。

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

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

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

$LocalAdmins | Select-String -pattern "Administrator" -notMatch
4

2 に答える 2

26

このような?

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

-pattern受け付けますREGEX。( または正規表現演算子 ) を使用して|、必要に応じて他の単語を追加できます。

于 2013-08-12T09:56:42.243 に答える
2

それが配列であると仮定すると$LocalAdmins、これを行うことができます:

$exclude = 'Administrator', 'Domain-Administrator', 'daemon'
$LocalAdmins | Where-Object { $exclude -notcontains $_ }
于 2013-08-12T09:56:49.990 に答える