我正在编写一个脚本,我想将一个数组与另一个数组进行比较,并根据结果更改一个布尔值(从$ false到$ true)。这对使用Replace方法的字符串工作正常,但对于布尔值不存在。谁能告诉我怎么做?
$bv
是一个对象数组,如下所示。
ServerName,Domain,Environment,Tier0
ServerA,usa,dev,$false
ServerB,usa,sit,$false
我正在尝试将该列表与另一个Tier0
计算机列表($t0List
)进行比较。
ServerB ServerC ServerD
因此,如果$bv
的第1列中的ServerName与$t0List
中的条目匹配,那么我想将Tier0
中的$bv
列更改为$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 :(得分:2)
不需要使用替换之类的内容,只需使用=
:
foreach ($b in $bv) {
if ($t0List -contains $b.ServerName) {
$b.Tier0 = $true
}
}
想要进一步简化吗?只需为其分配-contains
:
foreach ($b in $bv) {
$b.Tier0 = $t0List -contains $b.ServerName
}
答案 1 :(得分:0)
也许这会对你有所帮助:
您只需告诉$true
$false
和-not
之间切换
-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
}
}
应该有效