# encoding: ascii
# api: powershell
# title: VB MsgBox Powershell
# description: This is an advanced function I found that I’ve been using as a Show-Msgbox Function. Enjoy :)
# version: 0.1
# type: script
# author: Dyspareunia
# license: CC0
# function: Show-MsgBox
# x-poshcode-id: 3419
# x-archived: 2014-03-19T08:49:22
# x-published: 2014-05-20T16:18:00
#
#
<# 
            .SYNOPSIS  
            Shows a graphical message box, with various prompt types available. 
 
            .DESCRIPTION 
            Emulates the Visual Basic MsgBox function.  It takes four parameters, of which only the prompt is mandatory 
 
            .INPUTS 
            The parameters are:- 
             
            Prompt (mandatory):  
                Text string that you wish to display 
                 
            Title (optional): 
                The title that appears on the message box 
                 
            Icon (optional).  Available options are: 
                Information, Question, Critical, Exclamation (not case sensitive) 
                
            BoxType (optional). Available options are: 
                OKOnly, OkCancel, AbortRetryIgnore, YesNoCancel, YesNo, RetryCancel (not case sensitive) 
                 
            DefaultButton (optional). Available options are: 
                1, 2, 3 
 
            .OUTPUTS 
            Microsoft.VisualBasic.MsgBoxResult 
 
            .EXAMPLE 
            C:\PS> Show-MsgBox Hello 
            Shows a popup message with the text "Hello", and the default box, icon and defaultbutton settings. 
 
            .EXAMPLE 
            C:\PS> Show-MsgBox -Prompt "This is the prompt" -Title "This Is The Title" -Icon Critical -BoxType YesNo -DefaultButton 2 
            Shows a popup with the parameter as supplied. 
 
            .LINK 
            http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.msgboxresult.aspx 
 
            .LINK 
            http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.msgboxstyle.aspx 
            #> 
# By BigTeddy August 24, 2011 
# http://social.technet.microsoft.com/profile/bigteddy/. 
 
function Show-MsgBox 
{ 
 
 [CmdletBinding()] 
    param( 
    [Parameter(Position=0, Mandatory=$true)] [string]$Prompt, 
    [Parameter(Position=1, Mandatory=$false)] [string]$Title ="", 
    [Parameter(Position=2, Mandatory=$false)] [ValidateSet("Information", "Question", "Critical", "Exclamation")] [string]$Icon ="Information", 
    [Parameter(Position=3, Mandatory=$false)] [ValidateSet("OKOnly", "OKCancel", "AbortRetryIgnore", "YesNoCancel", "YesNo", "RetryCancel")] [string]$BoxType ="OkOnly", 
    [Parameter(Position=4, Mandatory=$false)] [ValidateSet(1,2,3)] [int]$DefaultButton = 1 
    ) 
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualBasic") | Out-Null 
switch ($Icon) { 
            "Question" {$vb_icon = [microsoft.visualbasic.msgboxstyle]::Question } 
            "Critical" {$vb_icon = [microsoft.visualbasic.msgboxstyle]::Critical} 
            "Exclamation" {$vb_icon = [microsoft.visualbasic.msgboxstyle]::Exclamation} 
            "Information" {$vb_icon = [microsoft.visualbasic.msgboxstyle]::Information}} 
switch ($BoxType) { 
            "OKOnly" {$vb_box = [microsoft.visualbasic.msgboxstyle]::OKOnly} 
            "OKCancel" {$vb_box = [microsoft.visualbasic.msgboxstyle]::OkCancel} 
            "AbortRetryIgnore" {$vb_box = [microsoft.visualbasic.msgboxstyle]::AbortRetryIgnore} 
            "YesNoCancel" {$vb_box = [microsoft.visualbasic.msgboxstyle]::YesNoCancel} 
            "YesNo" {$vb_box = [microsoft.visualbasic.msgboxstyle]::YesNo} 
            "RetryCancel" {$vb_box = [microsoft.visualbasic.msgboxstyle]::RetryCancel}} 
switch ($Defaultbutton) { 
            1 {$vb_defaultbutton = [microsoft.visualbasic.msgboxstyle]::DefaultButton1} 
            2 {$vb_defaultbutton = [microsoft.visualbasic.msgboxstyle]::DefaultButton2} 
            3 {$vb_defaultbutton = [microsoft.visualbasic.msgboxstyle]::DefaultButton3}} 
$popuptype = $vb_icon -bor $vb_box -bor $vb_defaultbutton 
$ans = [Microsoft.VisualBasic.Interaction]::MsgBox($prompt,$popuptype,$title) 
return $ans 
} #end function
