powershell:if循环,而arraylist的第一个位置在进程中

powershell:if循环,而arraylist的第一个位置在进程中,powershell,administrator,Powershell,Administrator,我有一个arraylist,我将在其中保存一些值。我正在执行foreach循环,如果要在ArrayList的第一个位置保存一个值,我想输出一个“first position”行,否则什么也不做。 我在下面写的if块不起作用。 <# Don't consider this code from here [System.Collections.ArrayList]$alist = @() $al ="keeranpc01,www.google.ch,192.168.0.25" $al =

我有一个arraylist,我将在其中保存一些值。我正在执行foreach循环,如果要在ArrayList的第一个位置保存一个值,我想输出一个“first position”行,否则什么也不做。 我在下面写的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; })
}

除了将列表的元素0与列表的顺序位置进行比较(无效)外,您所做的绑定工作确实有效。您需要比较以下各项:

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
}

你们所要做的工作是有效的,除非你们把你们的列表的元素0和列表的顺序位置相比较,这是无效的。您需要比较以下各项:

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
}

谢谢你的快速回复。如果我把foreach循环放到while循环中,每次foreach循环再次启动时,我都会看到“第一位置”按摩。当forecah循环进入while循环时,如何避免重复,while循环只执行foreach循环,直到取消。如果有嵌套循环,则需要测试两个循环。设置一个变量以指示这是否是第一次通过外循环,并在内循环上测试该变量,以查看它是否是第一次通过两个循环。在while loop.thx的第一次迭代结束时,需要将first time through outer循环变量设置为false,以便快速回复。如果我把foreach循环放到while循环中,每次foreach循环再次启动时,我都会看到“第一位置”按摩。当forecah循环进入while循环时,如何避免重复,while循环只执行foreach循环,直到取消。如果有嵌套循环,则需要测试两个循环。设置一个变量以指示这是否是第一次通过外循环,并在内循环上测试该变量,以查看它是否是第一次通过两个循环。在while循环的第一次迭代结束时,需要将first time-through-outer循环变量设置为false。
if($rear.Count-eq 0){Write Host…}
if($rear.Count-eq 0){Write Host…}