Kuddel071089 9 Geschrieben 8. März 2017 Melden Geschrieben 8. März 2017 (bearbeitet) Hallo zusammen, ich habe mir für ein Skript einen Countdwn gebaut, der jewiels ein Anzahl an Sekunden herunterzählt. Diesen habe ich jetzt auf MInuten umgebaut und würde gerne die letzten Minute wiederum in Sekunden runterzählen. Klappt nur leider nicht: #Wartezeit von 5 Minuten $waitMinutes = 5 $waitMinutes..0 | Foreach-Object { cls Write-Host "Wartezeit:" -ForegroundColor Yellow -NoNewline Write-Host " $_" -ForegroundColor Red -NoNewline Write-Host " Minuten" -ForegroundColor Yellow -NoNewline Start-Sleep -Seconds 60 if($_ -eq 1) { $waitSeconds = 60 $waitSeconds..0 | Foreach-Object { cls Write-Host "Wartezeit:" -ForegroundColor Yellow -NoNewline Write-Host " $_" -ForegroundColor Red -NoNewline Write-Host " Sekunden" -ForegroundColor Yellow -NoNewline Start-Sleep -Seconds 1} } } Hat jemand eine Idee wo der Fehler ist ? Am besten wäre natürlich, wenn die Zeit in Minuten und Sekunden heruntergezählt wird:Wartezeit 5:45 zb. Aber das ist sicher noch schwerer umsetzbar Danke schon einmal bearbeitet 8. März 2017 von Kuddel071089
BOfH_666 586 Geschrieben 8. März 2017 Melden Geschrieben 8. März 2017 geht alles ... probier ma das hier $Start = Get-Date $Duration = New-TimeSpan -Minutes 5 Do{ Start-Sleep -Seconds 1 $ElapsedTime = New-TimeSpan -Start $Start -End $(Get-Date) $Time = "{0:D2}:{1:D2}" -f $ElapsedTime.Minutes, $ElapsedTime.Seconds Write-Progress $Time } While((Get-date) -lt ($Start + $Duration))
Kuddel071089 9 Geschrieben 8. März 2017 Autor Melden Geschrieben 8. März 2017 geht alles ... probier ma das hier $Start = Get-Date $Duration = New-TimeSpan -Minutes 5 Do{ Start-Sleep -Seconds 1 $ElapsedTime = New-TimeSpan -Start $Start -End $(Get-Date) $Time = "{0:D2}:{1:D2}" -f $ElapsedTime.Minutes, $ElapsedTime.Seconds Write-Progress $Time } While((Get-date) -lt ($Start + $Duration)) Geht das ganze auch Rückwärts ? Jetzt wird ja von 0 bis 5 Minuten gezählt. Ich hätte aber gern von 5 bis 0 Minuten
Beste Lösung NilsK 3.046 Geschrieben 8. März 2017 Beste Lösung Melden Geschrieben 8. März 2017 Moin, $Start = Get-Date $Duration = New-TimeSpan -Minutes 5 $End = $Start + $Duration Do{ Start-Sleep -Seconds 1 $DisplayTime = New-TimeSpan -Start $(Get-Date) -End $End $Time = "{0:D2}:{1:D2}" -f ($DisplayTime.Minutes), ($DisplayTime.Seconds) Write-Progress $Time } While((Get-date) -lt $End) Gruß, Nils
4077 30 Geschrieben 8. März 2017 Melden Geschrieben 8. März 2017 (bearbeitet) Und im Ursprungsskript wäre es so zu ändern (quick and dirty): if($_ -gt 1) { $waitSeconds = 60 $waitSeconds..0 | Foreach-Object { cls Write-Host "Wartezeit:" -ForegroundColor Yellow -NoNewline Write-Host " $_" -ForegroundColor Red -NoNewline Write-Host " Sekunden" -ForegroundColor Yellow -NoNewline if($_ -eq 0) {Write-Host "fertig" -ForegroundColor Green break } else {Write-Verbose "nix zu tun"} Start-Sleep -Seconds 1} } else {Write-Verbose "nix zu tun"} } bearbeitet 8. März 2017 von 4077
Kuddel071089 9 Geschrieben 8. März 2017 Autor Melden Geschrieben 8. März 2017 Moin, $Start = Get-Date $Duration = New-TimeSpan -Minutes 5 $End = $Start + $Duration Do{ Start-Sleep -Seconds 1 $DisplayTime = New-TimeSpan -Start $(Get-Date) -End $End $Time = "{0:D2}:{1:D2}" -f ($DisplayTime.Minutes), ($DisplayTime.Seconds) Write-Progress $Time } While((Get-date) -lt $End) Gruß, Nils Na das sieht doch super aus, vielen Dank :-)
tdelgreco 0 Geschrieben 21. März 2019 Melden Geschrieben 21. März 2019 function Start-cpSleepProgressBar { <# .SYNOPSIS This feature is the control of the function Write-Progress Bar simplified. .DESCRIPTION This feature is the control of the function Write-Progress Bar simplified. .EXAMPLE Start-cpSleepProgressBar -Activity "test" -ProgressFlow Increasingly -TimeIn Seconds -Value 10 .EXAMPLE Start-cpSleepProgressBar -Activity "test" -ProgressFlow Decreasing -TimeIn Seconds -Value 10 .EXAMPLE Start-cpSleepProgressBar -Activity "test" -ProgressFlow Increasingly -TimeIn Seconds -Value 10 -ReturnCode .NOTES Create by : T. Del Greco Date : 03.03.2018 #> [CmdletBinding()] [OutputType()] PARAM ( [parameter(Mandatory=$false)][System.String]$Activity = "Please wait.", [parameter(Mandatory=$false)][ValidateSet('Increasingly','Decreasing')][System.String]$ProgressFlow = 'Increasingly', [parameter(Mandatory=$false)][ValidateSet('Hours','Minutes','Seconds')][System.String]$TimeIn = 'Seconds', [parameter(Mandatory=$true)][System.Int32]$Value, [parameter(Mandatory=$false)][System.Boolean]$ReturnCode ) BEGIN { switch ($TimeIn) { 'Seconds' { $SleepSeconds = $Value } 'Minutes' { $SleepSeconds = $Value * 60 } 'Hours' { $SleepSeconds = $Value * 60 * 60 } } } PROCESS { switch ($ProgressFlow) { 'Increasingly' { for($Count=0; $Count -lt $SleepSeconds; $Count++) { Write-Progress -Activity $Activity -Status "Sleeping" -SecondsRemaining $Count -PercentComplete ($Count/$SleepSeconds*100) Start-Sleep -Seconds 1 } } 'Decreasing' { for($Count=$SleepSeconds; $Count -gt 0; $Count--) { Write-Progress -Activity $Activity -Status "Sleeping" -SecondsRemaining $Count -PercentComplete ($Count/$SleepSeconds*100) Start-Sleep -Seconds 1 } } } } END { if ($ReturnCode) { return $true } } }
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden