initial commit
This commit is contained in:
210
PSGUIFunctions.ps1
Normal file
210
PSGUIFunctions.ps1
Normal file
@@ -0,0 +1,210 @@
|
||||
#Requires -Version 5
|
||||
|
||||
# Collection of cobbled together Powershell functions for GUI based message and user input prompts.
|
||||
|
||||
function Select-Folder {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Opens a folder selection dialog and returns full path to the folder.
|
||||
|
||||
.EXAMPLE
|
||||
$selectedFolder = Select-Folder
|
||||
#>
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
$FolderSelect = New-Object System.Windows.Forms.FolderBrowserDialog
|
||||
$null = $FolderSelect.ShowDialog()
|
||||
$SelectedFolder = $FolderSelect.SelectedPath
|
||||
return $SelectedFolder
|
||||
}
|
||||
|
||||
|
||||
function Select-File {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Opens a file selection dialog and returns full path to the file.
|
||||
|
||||
.PARAMETER InitialDialogDir
|
||||
Specifies the inital directory to start in the dialog. If unspecified it defaults to the root of the home drive.
|
||||
|
||||
.EXAMPLE
|
||||
$selectedFile = Select-File -InitialDialogDir "C:\Users\Public\Documents"
|
||||
#>
|
||||
param (
|
||||
[Parameter(Mandatory=$false)]
|
||||
[String] $InitialDialogDir = "$env:HOMEDRIVE"
|
||||
)
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
$FileSelect = New-Object System.Windows.Forms.OpenFileDialog -Property @{
|
||||
InitialDirectory = $InitialDialogDir
|
||||
filter = "All files (*.*)| *.*"
|
||||
}
|
||||
$null = $FileSelect.ShowDialog()
|
||||
$SelectedFile = $FileSelect.FileName
|
||||
return $SelectedFile
|
||||
}
|
||||
|
||||
|
||||
function Save-File {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Creates a save file dialog and returns the path and name of the file to save.
|
||||
|
||||
.PARAMETER InitialDialogDir
|
||||
Specifies the initial directory to start in the dialog. If unspecified it defaults to the root of the home drive.
|
||||
|
||||
.EXAMPLE
|
||||
$saveFile = Save-File -InitialDialogDir "C:\Users\Public\Documents"
|
||||
#>
|
||||
param (
|
||||
[Parameter(Mandatory=$false)]
|
||||
[String]
|
||||
$InitialDialogDir = "$env:HOMEDRIVE"
|
||||
)
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
$FileSelect = New-Object System.Windows.Forms.SaveFileDialog -Property @{
|
||||
InitialDirectory = $InitialDialogDir
|
||||
filter = "All files (*.*)| *.*"
|
||||
}
|
||||
$null = $FileSelect.ShowDialog()
|
||||
$SelectedFile = $FileSelect.FileName
|
||||
return $SelectedFile
|
||||
}
|
||||
|
||||
|
||||
function Show-MessageBox {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Displays a message box and returns the button pressed in response.
|
||||
|
||||
.PARAMETER MessageText
|
||||
Specifies the main text of the message to display.
|
||||
|
||||
.PARAMETER MessageTitle
|
||||
Specifies the title of the message box.
|
||||
|
||||
.PARAMETER ButtonOptions
|
||||
Specifies the button types shown for response to the message box. Default is 'OKCancel'.
|
||||
|
||||
.PARAMETER MessageBoxIcon
|
||||
Specifies the icon displayed on the message box to indicate it's type. Default is 'Information'.
|
||||
|
||||
.PARAMETER MessageBoxDefaultButton
|
||||
Specifies the default button to be activated on the message box. Default is 'Button1'.
|
||||
|
||||
.EXAMPLE
|
||||
$returnedMessageBoxButton = Show-MessageBox -MessageText "Hello, World" -MessageTitle "Hello World"
|
||||
#>
|
||||
param (
|
||||
[Parameter(Mandatory=$true)]
|
||||
[String]
|
||||
$MessageText,
|
||||
[Parameter(Mandatory=$false)]
|
||||
[String]
|
||||
$MessageTitle = "Message",
|
||||
[Parameter(Mandatory=$false)]
|
||||
[String]
|
||||
$ButtonOptions = "OKCancel", # YesNoCancel, AbortRetryIgnore, YesNo, RetryCancel
|
||||
[Parameter(Mandatory=$false)]
|
||||
[String]
|
||||
$MessageBoxIcon = "Information", # Error, Question, Warning, Stop, Hand
|
||||
[Parameter(Mandatory=$false)]
|
||||
[String]
|
||||
$MessageBoxDefaultButton = "Button1" # Button2, Button3
|
||||
)
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
$ButtonReturn=[System.Windows.Forms.MessageBox]::Show("$MessageText","$MessageTitle", +
|
||||
[System.Windows.Forms.MessageBoxButtons]::$ButtonOptions,[System.Windows.Forms.MessageBoxIcon]::$MessageBoxIcon, +
|
||||
[System.Windows.Forms.MessageBoxDefaultButton]::$MessageBoxDefaultButton)
|
||||
return $ButtonReturn
|
||||
}
|
||||
|
||||
|
||||
function Get-UserInput {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Displays a user input box and returns the user's input as a string (default) or integer (see parameter).
|
||||
|
||||
.PARAMETER InputMessage
|
||||
Specifies the main text of the input box message to display.
|
||||
|
||||
.PARAMETER InputTitle
|
||||
Specifies the title of the input box.
|
||||
|
||||
.PARAMETER DefaultInput
|
||||
Allows you to set an initial default input value for the user.
|
||||
|
||||
.PARAMETER ReturnAsInteger
|
||||
Default is set to '$false'. Set to '$true' to convert input from string to integer (if conversion is possible).
|
||||
|
||||
.EXAMPLE
|
||||
$userInput = Get-UserInput -InputMessage "What is your name?" -InputTitle "Your Information"
|
||||
$userInput = Get-UserInput -InputMessage "How old are you?" -ReturnAsInteger $true
|
||||
#>
|
||||
param (
|
||||
[Parameter(Mandatory=$true)]
|
||||
[String]
|
||||
$InputMessage,
|
||||
[Parameter(Mandatory=$false)]
|
||||
[String]
|
||||
$InputTitle = "Input Request",
|
||||
[Parameter(Mandatory=$false)]
|
||||
[String]
|
||||
$DefaultInput,
|
||||
[Parameter(Mandatory=$false)]
|
||||
[bool]
|
||||
$ReturnAsInteger = $false # Set to "$true" if you want a numeric string converted to an integer
|
||||
)
|
||||
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
|
||||
$UsersInput = [Microsoft.VisualBasic.Interaction]::InputBox($InputMessage, $InputTitle, $DefaultInput)
|
||||
if ($ReturnAsInteger -eq $true -and $UsersInput -match "^\d+$") {
|
||||
return [int]$UsersInput
|
||||
} else {
|
||||
return $UsersInput
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Display Listbox Input Selection
|
||||
function Show-ListBox {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Displays a listbox and returns single or multiple choices from the list of items. (Uses Powershell's Out-GridView.)
|
||||
|
||||
.PARAMETER ItemsForList
|
||||
List items must be passed in from a Powershell array.
|
||||
|
||||
.PARAMETER ChoiceMode
|
||||
Allows you to set for 'Single' item only or 'Multiple' item selections by user. Default is 'Single'.
|
||||
Single items are returned as System.String type, multiple items are returned as a System.Object[] type.
|
||||
|
||||
.PARAMETER BoxTitle
|
||||
Specifies the title of the list box and can be used to ask for selection.
|
||||
|
||||
.PARAMETER SortListItems
|
||||
Allows you to specify if list item are sorted (e.g. alphabetically). Default is '$false'.
|
||||
|
||||
.EXAMPLE
|
||||
$listItems = @('Jack','John','Jill','Jane')
|
||||
$userInput = Show-ListBox -ItemsForList $listItems -BoxTitle "Please choose a name:" -ChoiceMode "Single" -SortListItems $true
|
||||
#>
|
||||
param (
|
||||
[Parameter(Mandatory=$true)]
|
||||
[array]
|
||||
$ItemsForList, # List items passed in as an array
|
||||
[Parameter(Mandatory=$false)]
|
||||
[String]
|
||||
$ChoiceMode = "Single", # "Single" (default) or "Multiple" item selection
|
||||
[Parameter(Mandatory=$false)]
|
||||
[String]
|
||||
$BoxTitle = "Choose item below and press OK:",
|
||||
[Parameter(Mandatory=$false)]
|
||||
[bool]
|
||||
$SortListItems = $false # Set to "$true" if you want to sort the list items alphanumerically
|
||||
)
|
||||
if ($SortListItems) {
|
||||
$SelectedBoxItems = $ItemsForList | Sort-Object | Out-GridView -OutputMode $ChoiceMode -Title $BoxTitle
|
||||
} else {
|
||||
$SelectedBoxItems = $ItemsForList | Out-GridView -OutputMode $ChoiceMode -Title $BoxTitle
|
||||
}
|
||||
return $SelectedBoxItems
|
||||
}
|
||||
Reference in New Issue
Block a user