У меня есть скрипт, который пингует системы до его завершения. Основной кодовый блок - это функция, которая имеет foreach l oop, вложенный в do до l oop.
## 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, скрипт можно остановить только после того, как функция ping-host была применена ко всем устройствам в $ Hosts_Array. Я хочу иметь возможность остановить сценарий, вызвав функцию stop-script, даже если функциональный 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 l oop, но затем начинается снова с foreach l oop, bcz foreach l oop находится в до, пока l oop .. Любые предложения ??