powershellのwhere-objectで20個の条件を指定したい

ぷんち 40 評価のポイント
2024-02-13T09:39:08.0533333+00:00

お世話になっております。 pwershellのwhere-objectにおいて20個ほどの除外条件を指定したいのですが、一つ一つ20個書くしかありませんでしょうか? 1.csvファイルを開きます。 2.特定列にコードが入っていますが、そのうち20個ほど除外したいです。 例えば、 Import-Csv -Path "c:\test.csv" -Encoding Default | Where-Object { $.パターンコード -ne '001' -and $.パターンコード -ne '002' -and $.パターンコード -ne '003' -and $.パターンコード -ne '004' -and $.パターンコード -ne '005' -and $.パターンコード -ne '010' -and $.パターンコード -ne '033' -and $.パターンコード -ne '050' -and $_.パターンコード -ne '093' } のようになります。 どんどん長くなるので何かいい方法はないでしょうか?

Windows Server PowerShell
Windows Server PowerShell
Windows Server: エンタープライズ レベルの管理、データ ストレージ、アプリケーション、通信をサポートする Microsoft サーバー オペレーティング システムのファミリ。PowerShell: コマンドライン シェルと関連するスクリプト言語で構成される Microsoft タスク自動化および構成管理フレームワークのファミリ。
2 件の質問
0 件のコメント コメントはありません
{count} 件の投票

承認済みの回答
  1. gekka 6,846 評価のポイント MVP
    2024-02-13T10:42:08.09+00:00

    全ての除外の条件が単純値であるなら

    $exclude=@("001","002","003","004","005","010","033","050", "093");
    
    Import-Csv "c:\\temp\\test.csv" -Encoding Default | Where-Object {-not $exclude.Contains($_.パターンコード)}
    

    のように、除外する値を先に配列などに入れておいて、その配列に含まれているかどうかを判定すると簡略化できます。

    1 人がこの回答が役に立ったと思いました。

0 件の追加の回答

並べ替え方法: 最も役に立つ