Powershell Statusbalken mit Get-Random ausgeben
Ich komme einfach nicht weiter, mir fehlt anscheint das logische Denken fürs programmieren.
Dieses kleine Skript macht nichts anderes als einen Statusbalken anzuzeigen.
Ich habe zusätzlich den Get-Random Befehl hinzugefügt und möchte das der Balken bei jedem Durchlauf eine Zufällige Geschwindigkeit erhält.
In dem Fall darf der ausgegebener Wert nicht höher als 500 sein. Wenn ich das Skript so laufen lasse, erziele ich leider immer das gleiche Ergebnis, der Statusbalken zeigt immer die gleiche Geschwindigkeit, ist also nicht Variabel.
Hat jemand eine Idee?
Dieses kleine Skript macht nichts anderes als einen Statusbalken anzuzeigen.
Ich habe zusätzlich den Get-Random Befehl hinzugefügt und möchte das der Balken bei jedem Durchlauf eine Zufällige Geschwindigkeit erhält.
In dem Fall darf der ausgegebener Wert nicht höher als 500 sein. Wenn ich das Skript so laufen lasse, erziele ich leider immer das gleiche Ergebnis, der Statusbalken zeigt immer die gleiche Geschwindigkeit, ist also nicht Variabel.
for ($i=0; $i -le 100; $i++)
{
Write-Progress -Activity "start first Level" -PercentComplete $i -Status "loading $i"
sleep -Milliseconds (Get-Random -Maximum 500)
Hat jemand eine Idee?
Ich Danke schon mal im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 629159
Url: https://administrator.de/forum/powershell-statusbalken-mit-get-random-ausgeben-629159.html
Ausgedruckt am: 08.04.2025 um 13:04 Uhr
1 Kommentar

Wenn du den Random Wert innerhalb der Schleife immer wieder neu erzeugst wird das eine "Choppy" Experience und du meinst nur das es immer gleich ist weil die Werte sich im Gesamt-Durchschnitt meist ähneln.
Speichere den Random Wert vor der Schleife zwischen und nutze diesen für den gesamten Durchlauf. Wenn du nun das Skript erneut laufen lässt hat die Variable wieder einen anderen Wert für den gesamten Durchlauf der Schleife und nicht nur für den Sprung von einem auf den anderen Prozentwert.
Du kannst alternativ auch so was machen
Speichere den Random Wert vor der Schleife zwischen und nutze diesen für den gesamten Durchlauf. Wenn du nun das Skript erneut laufen lässt hat die Variable wieder einen anderen Wert für den gesamten Durchlauf der Schleife und nicht nur für den Sprung von einem auf den anderen Prozentwert.
$rand = Get-Random -Min 0 -Max 500
for ($i=0; $i -le 100; $i++) {
Write-Progress -Activity "start first Level" -PercentComplete $i -Status "loading $i"
sleep -Milliseconds $rand
}
Du kannst alternativ auch so was machen
$rand = Get-Random -Min 0 -Max 500
0..$rand | %{
$complete = [math]::round((($_/$rand)*100))
Write-Progress -Activity "start first Level" -PercentComplete $complete -Status "loading $complete"
sleep -Milliseconds 20
}