Powershell:打破两个或多个循环
Powershell: break from two or more loops
我有一个脚本可以 ping 系统直到它终止。主代码块是一个函数,它有一个嵌套在 do until 循环中的 foreach 循环。
## Start
function start-skript{
Write-Output 'Ping läuft...'
$Repetition_Counter = 0
#Start loop
do {
#Host loop
foreach($system in $Hosts_Array) {
#Ping Function
Ping-Host -HostToPing $system
#Write-Host 'Sleep for' $Pause 'sekunde'
Start-Sleep -Seconds $Pause
} $Repetition_Counter ++
} until($Repetition_Counter -eq $Repetition -or (stop-script))
}
start-skript
它运行良好。但是,通过调用 stop-script 函数,只有在 $Hosts_Array 中的所有设备都应用了 ping-host 函数后,才能停止脚本。我希望能够通过调用停止脚本函数来停止脚本,即使函数 Ping-host 尚未应用于 $Hosts_Array 数组中的所有设备。我想,我可以像下面那样做
## Start
function start-skript{
Write-Output 'Ping läuft...'
$Repetition_Counter = 0
#Start loop
do {
#Host loop
foreach($system in $Hosts_Array) {
#Ping Function
Ping-Host -HostToPing $system
#Write-Host 'Sleep for' $Pause 'sekunde'
**stop-script** ## I've just added the function here
Start-Sleep -Seconds $Pause
} $Repetition_Counter ++
} until($Repetition_Counter -eq $Repetition -or (stop-script))
}
start-skript
我没有锻炼。它刚从 foreach 循环中出来,但随后又从 foreach 循环开始,bcz foreach 循环进入了 do until 循环。
有什么建议吗??
使用语句标签:
:outer
do
{
:inner
foreach($i in 1..10){
if($i -eq 2){
continue inner
}
if($i -gt 5){
break outer
}
$i
}
}while($true)
输出将是:
1
3
4
5
因为我们 continue
在 $i -eq 2
上进行了内循环并在 $i -eq 5
之后跳出了外循环
我有一个脚本可以 ping 系统直到它终止。主代码块是一个函数,它有一个嵌套在 do until 循环中的 foreach 循环。
## Start
function start-skript{
Write-Output 'Ping läuft...'
$Repetition_Counter = 0
#Start loop
do {
#Host loop
foreach($system in $Hosts_Array) {
#Ping Function
Ping-Host -HostToPing $system
#Write-Host 'Sleep for' $Pause 'sekunde'
Start-Sleep -Seconds $Pause
} $Repetition_Counter ++
} until($Repetition_Counter -eq $Repetition -or (stop-script))
}
start-skript
它运行良好。但是,通过调用 stop-script 函数,只有在 $Hosts_Array 中的所有设备都应用了 ping-host 函数后,才能停止脚本。我希望能够通过调用停止脚本函数来停止脚本,即使函数 Ping-host 尚未应用于 $Hosts_Array 数组中的所有设备。我想,我可以像下面那样做
## Start
function start-skript{
Write-Output 'Ping läuft...'
$Repetition_Counter = 0
#Start loop
do {
#Host loop
foreach($system in $Hosts_Array) {
#Ping Function
Ping-Host -HostToPing $system
#Write-Host 'Sleep for' $Pause 'sekunde'
**stop-script** ## I've just added the function here
Start-Sleep -Seconds $Pause
} $Repetition_Counter ++
} until($Repetition_Counter -eq $Repetition -or (stop-script))
}
start-skript
我没有锻炼。它刚从 foreach 循环中出来,但随后又从 foreach 循环开始,bcz foreach 循环进入了 do until 循环。 有什么建议吗??
使用语句标签:
:outer
do
{
:inner
foreach($i in 1..10){
if($i -eq 2){
continue inner
}
if($i -gt 5){
break outer
}
$i
}
}while($true)
输出将是:
1
3
4
5
因为我们 continue
在 $i -eq 2
上进行了内循环并在 $i -eq 5