2017-06-15 19 views
0

私はPowerShellコードでif文を実装しようとしています。他のフィルタを追加するのに問題があります。なぜそれを行うのかわからないからです。以下は私が追加しようとしているものです。CSV Powershell If文フィルタ

#Excluded Formulaに次のように追加するにはどうすればよいですか? Type0行に "Local"と等しい行があり、Account0行が "ACCOUNTS - DOD"、 "Account-dom"、 "accounts"に等しく、行UANが "APA"と等しい場合は、 "DOD "、" Planstack "、" Excluded Row "は" True "を表示し、そうでない場合はEcludedはFalseになります。

Foreach ($row in $csv) { 
If ($row.Type0 -eq 'Local' -and $row.Account0 -eq 'ACCOUNTS - DODSCAN','') { 
    $row."Excluded" = "True" 
    Write-Host $row."Excluded" 
    } Else { 
    $row."Excluded" = "False" 
    } 
} 

は、以下の私のCSVの列の画像であると私は除外列が等しい真または偽であればelse文のオフに行く作るしようとしていますことを示しています。 Desired output

+0

この質問は本当に不明です。あなたのデータはどのように見えますか? 「真」につながるべきデータの例と、「偽」につながるべきデータの例を投稿する。理想的には、[最小、完全で、検証可能な例](https://stackoverflow.com/help/mcve) – gms0ulman

+0

@ gms0ulmanを提供してください。 –

+0

私はまだ不明ですが、質問と要件の私の理解に基づいて答えを掲載しました。それが動作すれば教えてください。 – gms0ulman

答えて

0

詳しくはまだ完全にはっきりしていません。しかし、複雑なifステートメントを複数の基準で作成することに興味があることは明らかです。あなたがTrueに等しくなるように除外のためにしたいしたいと仮定すると

は次のとおりです。

  • TYPE0がAccount0は、次のいずれかに等しい
  • (「ローカル」または「ローカル」ではない正確にローカルまたは「somethingelseLocal」に等しいです: "アカウント - DOD"、 "アカウント-DOM" または "アカウント"
  • 一意のアカウント名は、次のいずれかです。 "APA"、 "DOD"、 "Planstack"

次にあなたが使用することができます以下。私は-andを使って3つの要件をまとめました。それぞれの条件の括弧で、何が起こっているかを見ることができます。 -in演算子を使用して、値がセットの1つであることをチェックします。セットは配列として作成されます。 @(1,2,3)

Foreach ($row in $csv) { 

    If (($row.Type0 -eq 'Local') -and ($row.Account0 -in @('ACCOUNTS - DODSCAN','Account-dom','accounts')) -and ($row."Unique Account Name" -in @('APA'.'DOD','Planstack'))) { 
     $row."Excluded" = "True" 
     Write-Host $row."Excluded" 
    } Else { 
     $row."Excluded" = "False" 
    } 

}