- Log PowerShell command outputs with Group Policy - Fri, Oct 16 2015
- PowerShell script to create local user accounts or local groups - Tue, Oct 13 2015
- How to display a pop-up message box with PowerShell - Wed, Sep 30 2015
Not everyone likes command line–based arguments. Some people want to be provided with a message box pop-up for YES or NO options or information/error messages. In this article, we will discuss how to show pop-up messages using PowerShell to serve such purposes. We will focus our discussion on how to present YES/NO, YES/NO/CANCEL, and OK/CANCEL kinds of pop-up messages.
Pop-up messages can be generated in PowerShell using Windows Forms. Although I don’t see any problems with them, they look a bit old and legacy-like. The Windows Presentation Framework provides similar functionality with rich-looking UIs. In this article, we will be using some of the classes from the Windows Presentation Framework assembly to create pop-up messages.
First, you need to import the Presentation Framework–related libraries into the current PowerShell session. You can do this using the following Add-Type statement. Without doing this, we cannot call the MessageBox-related classes that help in pop-up generation.
Add-Type -AssemblyName PresentationCore,PresentationFramework
This helps us access the classes in the Windows Presentation Framework. Now we need to decide what kind of message box we want to show (for example, a simple message box with an OK button, or a message box with “Yes” and “No” prompts). For demonstration purposes, we’ll assume you want to show a pop-up message box with YES and NO buttons. So we’ll put that in a variable using the following command:
$ButtonType = [System.Windows.MessageBoxButton]::YesNo
Now decide on the title for the pop-up message and the message you want to display:
$MessageboxTitle = “Test pop-up message title” $Messageboxbody = “Are you sure you want to stop this script execution?”
Also decide what kind of message you are displaying. Is it an error, a warning, or an informational message? Let’s assume it is a warning message:
$MessageIcon = [System.Windows.MessageBoxImage]::Warning
Now, let’s generate a pop-up message box with the data above. This uses the Show method of the System.Windows.MessageBox class.
The command above will show a pop-up message similar to this:
Your choice (Yes or No) is returned to PowerShell based on the button that you click. You can read this returned value and proceed with script execution accordingly.
Similarly, we can generate a message box with YES, NO, and CANCEL buttons and as an error message using the following code:
Add-Type -AssemblyName PresentationCore,PresentationFramework $ButtonType = [System.Windows.MessageBoxButton]::YesNoCancel $MessageIcon = [System.Windows.MessageBoxImage]::Error $MessageBody = "Are you sure you want to delete the log file?" $MessageTitle = "Confirm Deletion" $Result = [System.Windows.MessageBox]::Show($MessageBody,$MessageTitle,$ButtonType,$MessageIcon) Write-Host "Your choice is $Result"
This code will generate a pop-up message box similar to this one:
Yes-No-Cancel message box
To see the list of button types you can have for a pop-up message box, see this TechNet page.
A list of images (icons) you can use for a pop-up message can be found on this page.
And here is a list of options that you can pass to the Show() method of the System.Windows.MessageBox class.