function New-Sleep { [cmdletbinding()] param( [parameter(ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, Mandatory=$true, HelpMessage="No time specified")] [int]$s ) for ($i=1; $i -lt $s; $i++) { [int]$TimeLeft=$s-$i Write-Progress -Activity "Waiting $s seconds..." -PercentComplete (100/$s*$i) -CurrentOperation "$TimeLeft seconds left ($i elapsed)" -Status "Please wait" Start-Sleep -s 1 } Write-Progress -Completed $true -Status "Please wait" } # end function New-Sleep