watislos
Goto Top

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.

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!

Content-Key: 629159

Url: https://administrator.de/contentid/629159

Printed on: April 24, 2024 at 23:04 o'clock

Mitglied: 146707
Solution 146707 Dec 06, 2020 updated at 16:06:27 (UTC)
Goto Top
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.

$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
}