You can use this code to open a standard OpenFile dialog in your PowerShell scripts:
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$dialog = New-Object System.Windows.Forms.OpenFileDialog
$dialog = New-Object System.Windows.Forms.OpenFileDialog
$dialog.DefaultExt = '.ps1'
$dialog.Filter = 'PowerShell-Skripts|*.ps1|All Files|*.*'
$dialog.FilterIndex = 0
$dialog.InitialDirectory = $home
$dialog.Multiselect = $false
$dialog.RestoreDirectory = $true
$dialog.Title = "Select a script file"
$dialog.ValidateNames = $true
$dialog.ShowDialog()
$dialog.FileName
$dialog = New-Object System.Windows.Forms.OpenFileDialog
$dialog = New-Object System.Windows.Forms.OpenFileDialog
$dialog.DefaultExt = '.ps1'
$dialog.Filter = 'PowerShell-Skripts|*.ps1|All Files|*.*'
$dialog.FilterIndex = 0
$dialog.InitialDirectory = $home
$dialog.Multiselect = $false
$dialog.RestoreDirectory = $true
$dialog.Title = "Select a script file"
$dialog.ValidateNames = $true
$dialog.ShowDialog()
$dialog.FileName
To run the selected script, use this line instead:
& $dialog.FileName
Important note: Dialogs only work correctly when you launch PowerShell with the -STA option! So before you enter and run the code, be sure to open the correct PowerShell environment:
Powershell -sta