powershell: если l oop, в то время как первая позиция массива в процессе - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть arraylist, в котором я собираюсь сохранить некоторые значения. Я делаю foreach l oop, и если значение будет сохранено в первой позиции ArrayList, я хочу вывести строку «Первая позиция», и в противном случае ничего не должно быть сделано. Блок if, который я написал ниже, не работает.

<# Don't consider this code from here

[System.Collections.ArrayList]$alist = @()
$al ="keeranpc01,www.google.ch,192.168.0.25"

$al = $al.Split(",")
foreach($h in $al){
    # Abstand vor dem Hostnamen löschen
    if($h.contains(' ')) {
        $h = $h -replace '\s', ''
    }
    $alist.Add($h)
}
to here
#>


#### Start here
[System.Collections.ArrayList]$rear = @()

foreach($ha in $alist) {
    $PingConnetion = Test-Connection $ha -Count 1 -ErrorAction SilentlyContinue
    $pcre = $ha
    $pire =  if($PingConnetion.ResponseTime -ne $null) {Write-output 'Erreichbar'}else{Write-Output 'Nicht Erreichbar'}
    $zure = $PingConnetion.ResponseTime 
    $zeit = Get-Date -Format HH:mm:ss

    if($alist[$_] -eq $alist[0]) {Write-Host 'First position'}
    [void]$rear.Add([PSCustomObject]@{Zeit = $zeit; Host = $pcre; IPv4 = $PingConnetion.IPV4Address.IPAddressToString; Ping = $pire; Zugriffszeit = $zure; })
}

как мне написать оператор if, чтобы это было возможно? Я ожидаю, что оператор if сработает, только когда обрабатывается первая позиция ArrayList

thx

1 Ответ

2 голосов
/ 16 апреля 2020

То, что вы привязываете к выполнению, работает, за исключением того, что вы пытаетесь сравнить нулевой элемент вашего алиста с порядковой позицией вашего алиста, которая недействительна. Вам нужно сравнить следующее:

if($ha -eq $alist[0]) {Write-Host 'First position'}

Ниже приведен рабочий пример, который может быть более понятным.

$input = 1..10    
foreach($x in $input){
    if($input[0] -eq $x){
        write-host "First Position"
    }
    $x
}
...