Powershell komplizierte frage?
Hab eine Frage zu meinem Skript.
$hours = 5
0..$hours |
ForEach-Object {$percent = $_ * 100 / $hours;
Write-Progress -Activity "Ihr Arbeitsbeginn ist $($Arbeitsbeginn)" -Status "$($hours - $_) stunden verbleiben ihnen $($Username)..." -PercentComplete $percent;
Start-Sleep -Seconds 1
}
Ich möchte eine IF bedingung hinzufügen welche besagt "Sobald die Zeit fertig ist (Quasi die progressbar am Ende ist), soll ein write-host kommen. Test wird von mir definiert". Bekommt das jemand hin ?
2 Antworten
Ich weiß nicht, ob ich deine Frage richtig verstehe, aber das Programm wird einfach sequenziell abgearbeitet, das heißt, alles was nach dem Teil mit der Progressbar kommt, wird auch erst danach ausgeführt. Und das heißt wiederum: Du kannst Write-Host einfach unter die schließende Klammer vom ForEach-Object machen.
Ich habs mal beispielhaft als Funktion definiert. Du kannst sie z.B. mit test(5) aufrufen.
function test($hours) {
for ($hour = 0; $hour -lt $hours; $hour++) {
Write-Progress -Activity "Ihr Arbeitsbeginn ist $($Arbeitsbeginn)" -Status "$($hours - $hour) Stunden verbleiben Ihnen $($Username)..." -PercentComplete ($hour * 100 / $hours)
Start-Sleep -Seconds 1
}
Write-Host "DeInE ZeIt iSt aBgElAuFeN!!!"
}
$hours = 5
0..$hours |%{
$percent = $_ * 100 / $hours;
Write-Progress -Activity "Ihr Arbeitsbeginn ist $($Arbeitsbeginn)" -Status "$($hours - $_) stunden verbleiben ihnen $($Username)..." -PercentComplete $percent;
if ($percent -lt 100) { #Pause nur wenn unter 100%
Start-Sleep -Seconds 1
}
}
Write-Host Hallo laberrhababer -fo blue
pause
danke sehr hilfreich! Könntest du dir auch meine neuste Frage anschauen?