Cmdlets/Invoke-Pause.ps1

# ? TITEL Invoke-Pause
# ? DESCRIPTION Zeigt eine Pause an.
# ? TAGS UserCmdlet
# ? VERSION 2019.09.09

using Module Microsoft.PowerShell.Management
using Module Microsoft.PowerShell.Utility
using namespace System
using namespace System.Runtime.InteropServices
$ErrorActionPreference = [System.Management.Automation.ActionPreference]::Stop
Set-StrictMode -Version Latest

function Invoke-Pause {
    <#
        .SYNOPSIS
            Zeigt eine Pause an.
 
        .EXAMPLE
            Invoke-Pause -PauseInMinuten 15 -Titel Kaffeepause
    #>

    param (
        [Parameter(Mandatory = $true)]
        [decimal]$PauseInMinuten,

        [string]$Titel
    )
    $pauseInSekunden = $PauseInMinuten*60
    1..$pauseInSekunden | 
        ForEach-Object -Process {
            $restPauseSekunden = $PauseInMinuten*60-$_
            Write-Progress -Activity         "$PauseInMinuten Minuten $Titel!" `
                            -PercentComplete  ([int](100 / $pauseInSekunden * $_)) `
                            -SecondsRemaining $restPauseSekunden
            Start-Sleep -Seconds 1
    }
}