How to pause a PowerShell script

PowerShell is a cross-platform task automation and configuration management framework, consisting of a command-line shell and scripting language. Unlike most shells, which accept and return text, PowerShell is built on top of the . NET Common Language Runtime (CLR), and accepts and returns . NET objects. In this post, we will discuss How to pause a PowerShell script. Please see the difference between testing and debugging, and how to debug a PowerShell script.
You may be amazed to know that to pause a PowerShell script is not as easy and has nothing equivalent to cmd.exe’s “Pause” command. I will discuss various ways to implement the pause function in a PowerShell script.
Why perform a PowerShell Pause operation?
In PowerShell scripts, the Pause or Break command is used to introduce a pause or delay in the execution of the script. This is useful in scenarios when you want to allow the user to read output, review information, or take some action before the script proceeds.
Also, During script development, you might use Pause to temporarily stop the script execution to inspect variables, output, or the state of the system.
That is, it is used to halt the execution of a script or a sequence of commands until the user manually resumes it. It is used for displaying information and waiting for the user to acknowledge or proceed.
Note: You may have to set the Execution Policy for PowerShell to be able to run the PowerShell script. Also, you must run PowerShell as an Administrator.
Please see How to setup PowerShell on a Linux server, How to Pause Windows Update via Windows Settings. See how to set PowerShell Execution Policy via Windows Settings.
Pause a PowerShell script
Method 1: Just enter the PowerShell script into your existing script to have it paused.
Function Pause($M="Press any key to continue . . . "){If($psISE){$S=New-Object -ComObject "WScript.Shell";$B=$S.Popup("Click OK to continue.",0,"Script Paused",0);Return};Write-Host -NoNewline $M;$I=16,17,18,20,91,92,93,144,145,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183;While($K.VirtualKeyCode -Eq $Null -Or $I -Contains $K.VirtualKeyCode){$K=$Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")};Write-Host}
Method 2: What you could also try out is using the command below. The “/c” Carries out the command specified by string and then terminates | out-null pipes the output to out-null.
Where you’ll never see it If you want to see the “Press any key to continue…” message, remove the pipe but does not work in PowerShell ISE as it gets stuck.
cmd /c pause | out-null
Method 3: When the Pause command is encountered. PowerShell will display a message prompting the user to press Enter to continue. Below is an example of the operation.
Write-Host "This is some information."
Pause
Write-Host "The script continues from here."
In the above example, the script will display “This is some information.” and then pause execution until the user presses Enter. After pressing Enter, the script will print “The script continues from here as shown in this example.
Conclusion
It is worth noting that Pause is more interactive and useful when running scripts from the PowerShell console. Rather than in automated scripts where user interaction might not be desirable.
You could also use the Start-Sleep instead of Pause. If you need the script to wait for a specified period before proceeding.
I hope you found this blog post on how to pause a PowerShell script very helpful. If you have any questions, please let me know in the comment session.

