2017-06-15 81 views
0

我想在我的PowerShell代码中实现if语句。我无法添加其他过滤器,因为我不知道该怎么做。以下是我想要添加的内容。CSV Powershell如果语句筛选器

如何将以下内容添加到#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列的图像,并显示我试图使排除的列等于true或false离开if else语句。 Desired output

+0

这个问题真的不清楚。你的数据是什么样的?发布一个应该导致“真”的数据示例,以及应该导致“假”的数据。理想情况下,提供[最小,完整和可验证示例](https://stackoverflow.com/help/mcve) – gms0ulman

+0

@ gms0ulman它看起来更好,有意义吗? –

+0

我还不清楚,但根据我对问题和要求的理解发布了一个答案。请让我知道它是否有效。 – gms0ulman

回答

0

仍然不完全清楚的全部细节。但很显然你有兴趣用多个标准创建一个复杂的if声明。

假设想你想为排除等于True是:

  • 键入0以下的一等于本地确切(而不是“本地”或“本地”或“somethingelseLocal”
  • Account0等于:“账户 - 国防部”,“账户-DOM”或“账户”
  • 唯一的帐户名是下列之一:“APA”,“国防部”,“Planstack”

然后你就可以使用以下。我已经使用-and将3个要求串在一起,每个标准都包含括号,以便您可以看到发生了什么。 -in运算符用于检查值是否为一个集合;该组被创建为数组,例如, @(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" 
    } 

}