powershell:if循环,而arraylist的第一个位置在进程中
我有一个arraylist,我将在其中保存一些值。我正在执行foreach循环,如果要在ArrayList的第一个位置保存一个值,我想输出一个“first position”行,否则什么也不做。 我在下面写的if块不起作用。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 =
<# 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…}