我正在运行一个将 Citrix QFarm /load 命令输出到文本文件中的脚本;它本质上是两列,然后我将其输入到多维数组中,如下所示:
SERVER1 100
SERVER2 200
SERVER3 300
我正在寻找特定服务器的 indexOf 以便我可以检查负载均衡器级别是什么。当我使用 indexOf 方法时,我只会得到 -1 的回报;但是脚本末尾的明确 write-host 表明答案应该是 41。
为了将 IndexOf 与 2d 数组一起使用,是否需要一些魔法?
$arrQFarm= @()
$reader = [System.IO.File]::OpenText("B:\WorkWith.log")
try {
for(;;) {
$str1 = $reader.ReadLine()
if ($str1 -eq $null) { break }
$strHostname = $str1.SubString(0,21)
$strHostname = $strHostname.TrimEnd()
$strLB = $str1.SubString(22)
$strLB = $strLB.TrimEnd()
$arrQFarm += , ($strHostName , $strLB)
}
}
finally {
$reader.Close()
}
$arrCheckProdAppServers = "CTXPRODAPP1","CTXPRODAPP2"
foreach ($lines in $arrCheckProdAppServers){
$index = [array]::IndexOf($arrQFarm, $lines)
Write-host "Index is" $index
Write-Host "Lines is" $lines
}
if ($arrQFarm[41][0] -eq "CTXPRODAPP1"){
Write-Host "YES!"
}
运行它会给出输出:
PS B:\Citrix Health Monitoring\249PM.ps1
Index is -1
Lines is CTXPRODAPP1
Index is -1
Lines is CTXPRODAPP2
YES!