Jump to content

Powershell Countdowntimer


Direkt zur Lösung Gelöst von NilsK,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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 von Kuddel071089
Link zu diesem Kommentar

 

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

Link zu diesem Kommentar

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 von 4077
Link zu diesem Kommentar

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 :-)

Link zu diesem Kommentar
  • 2 Jahre später...
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
    }
}
}

 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...