2016-03-08 73 views
1

我正在處理腳本,我想將一個數組與另一個數組進行比較,並根據結果更改布爾值(從$ false到$ true)。這對使用Replace方法的字符串很好,但對於布爾值不存在。誰能告訴我如何做到這一點?有條件地更改導入的CSV中的布爾變量

$bv是一個對象數組,如下所示。

ServerName,Domain,Environment,Tier0 
ServerA,usa,dev,$false 
ServerB,usa,sit,$false 

我想該列表比較的Tier0計算機($t0List),看起來像這樣的另一個列表。

ServerB 
ServerC 
ServerD

所以,如果有是服務器名之間的$bv 1列和$t0List條目的比賽,那麼我想在$bvTier0欄更改爲$true

foreach ($b in $bv) { 
if ($t0List -contains $b.ServerName) { 
    $b.Tier0.Replace($b.Tier0,$true) 
    } 
} 

我與上面的代碼是得到的錯誤...

Method invocation failed because [System.Boolean] does not contain a method named 'Replace'.
+0

這裏沒有足夠的信息;我們不知道這些變量是什麼類型的對象,並不完全清楚你在這裏試圖完成什麼。請包括[mcve]。 – briantist

+0

根據要求更新。我希望這是明確的。 – Acerbity

回答

2

有沒有必要使用類似取代,只是=賦值:

foreach ($b in $bv) { 
    if ($t0List -contains $b.ServerName) { 
     $b.Tier0 = $true 
    } 
} 

想要更簡化它嗎?只需將其分配給您的結果-contains

foreach ($b in $bv) { 
    $b.Tier0 = $t0List -contains $b.ServerName 
} 
+0

謝謝。這比使用字符串要容易得多。 – Acerbity

0

也許這可以幫助你:

你只需告訴它-not$true$false之間翻轉是

-not $true帶回$false

-not $false 帶回 $true

所以

foreach ($b in $bv) { 
if ($t0List -contains $b.ServerName) { 
    $b.Tier0 = -not ($b.Tier0) 
    } 
} 

foreach ($b in $bv) { 
if ($t0List -contains $b.ServerName) { 
    $b.Tier0 = $true 
    } 
} 

應該工作

+0

我可以在閱讀時,但我想存儲更改的值。上面添加的代碼和解釋來澄清。 – Acerbity