2017-08-10 97 views
1

作爲用於修改CSV一個腳本的一部分,我檢查針對一列subCatDesc以確定基於存儲在一個預定值的陣列。如何在的powershell使用數組變量作爲自變量,如果語句

$grocerySubTeams = "Grocery","Frozen","Bulk","Dairy" 

function identifyTeam() { 
foreach ($row in $csv) { 
    if ($row.subCatDesc -contains $grocerySubTeams) { 
     $row.team = "Grocery" 
    } 
    } 
} 

當運行此腳本的欄保持空白。但是,如果我在下面明確說明了我想要的內容,它就可以工作。

function identifyTeam() { 
foreach ($row in $csv) { 
    if (($row.subCatDesc -like "Grocery") -or ($row.subCatDesc -like "Frozen") -or ($row.subCatDesc -like "Bulk") -or ($row.subCatDesc -like "Dairy")) { 
     $row.team = "Grocery" 
    } 
    } 
} 

我試過對陣列而不是-contains的不同比較運算符,但都沒有工作。

+0

您是否試圖將一個項目與多個項目進行比較,或多個比較? – TheIncorrigible1

+1

試用,代替-contains –

+0

因此,列** subCatDesc **可以是*雜貨*,*散裝*,*冷凍*或*乳製品*。如果它匹配這4個項目中的任何一個,則列** Team **應設置爲* Grocery *。這是否爲你澄清? – BryceJenkins

回答

1

它是周圍的其他方法:

$grocerySubTeams -contains $row.subCatDesc 
+0

其實只是把比較運算符從**切換到**包含**到** - 像Mark Wragg那樣建議解決它,因爲I我將$ row.subCatDesc的值與預先定義的$ grocerySubTeams數組進行比較。 – BryceJenkins

0

在切換過程比較操作的初步意見馬克Wragg給出的答案-in解決了我所看到的行爲。

if ($row.subCatDesc -in $grocerySubTeams) { 

是比較單元格的單個值與數組的多個項目的正確語法。