Public/Input/New-Inputbox.ps1

function New-Inputbox {
  <#
.SYNOPSIS
    Display a Visual Basic style inputbox.
.DESCRIPTION
    This function will display a graphical Inputbox, like the one from VisualBasic
    and VBScript. You must specify a message prompt. You can specify a title, the
    default is "Input". You can also specify a default value. The inputbox will write
    whatever is entered into it to the pipeline. If you click Cancel the inputbox
    will still write a string to the pipeline with a length of 0. It is recommended
    that you validate input.
.PARAMETER Prompt
    A string that is displayed before the text entry field in dialog box
.PARAMETER Title
    A string that appears as the title of the dialog box
.PARAMETER Default
    An optional parameter indicating the default value of the text entry field
.EXAMPLE
    $c = New-Inputbox -Prompt 'Enter the Netbios name of a domain computer' -Title "Enter a computername" -Default $env:computername
    Get-Service -ComputerName $c
.OUTPUTS
    [string]
#>


  [CmdletBinding(ConfirmImpact = 'None')]
  [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')]

  Param (
    [Parameter(Position = 0)]
    [ValidateNotNullorEmpty()]
    [string] $Prompt = 'Please enter a value',

    [Parameter(Position = 1)]
    [string] $Title = 'Input',

    [Parameter(Position = 2)]
    [string] $Default = ''

  )

  begin {
    Write-Invocation $MyInvocation
    Out-Verbose "-Prompt is [$Prompt]"
    Out-Verbose "-Title is [$Title]"
    Out-Verbose "-Default is [$Default]"
  }

  process {
    try {
      Add-Type -AssemblyName 'microsoft.visualbasic' -ErrorAction Stop
      [Microsoft.VisualBasic.Interaction]::InputBox($Prompt, $Title, $Default)
    } catch {
      Write-Warning -Message 'There was a problem creating the inputbox'
      Write-Warning -Message $_.Exception.Message
    }
  }

  end {
    Out-Verbose $fxn "Complete."
  }
}