Private/Show-SaveFileDialog.ps1
|
function Show-SaveFileDialog { <# .SYNOPSIS Shows a Windows Save File dialog for selecting export path. .PARAMETER DefaultFileName The default filename to use. .PARAMETER Title The dialog title. .PARAMETER Filter The file filter (e.g., "CSV Files (*.csv)|*.csv"). .PARAMETER InitialDirectory The initial directory to open. #> [CmdletBinding()] param( [Parameter(Mandatory = $false)] [string]$DefaultFileName = "export.csv", [Parameter(Mandatory = $false)] [string]$Title = "Save As", [Parameter(Mandatory = $false)] [string]$Filter = "CSV Files (*.csv)|*.csv|All Files (*.*)|*.*", [Parameter(Mandatory = $false)] [string]$InitialDirectory = [Environment]::GetFolderPath('Desktop') ) Add-Type -AssemblyName System.Windows.Forms $saveDialog = New-Object System.Windows.Forms.SaveFileDialog $saveDialog.Title = $Title $saveDialog.Filter = $Filter $saveDialog.FileName = $DefaultFileName $saveDialog.InitialDirectory = $InitialDirectory $saveDialog.OverwritePrompt = $true $saveDialog.AddExtension = $true $saveDialog.DefaultExt = "csv" $result = $saveDialog.ShowDialog() if ($result -eq [System.Windows.Forms.DialogResult]::OK) { return $saveDialog.FileName } return $null } function Show-OpenFileDialog { <# .SYNOPSIS Shows a Windows Open File dialog for selecting a file to import. .PARAMETER Title The dialog title. .PARAMETER Filter The file filter (e.g., "CSV Files (*.csv)|*.csv"). .PARAMETER InitialDirectory The initial directory to open. #> [CmdletBinding()] param( [Parameter(Mandatory = $false)] [string]$Title = "Open", [Parameter(Mandatory = $false)] [string]$Filter = "CSV Files (*.csv)|*.csv|Text Files (*.txt)|*.txt|All Files (*.*)|*.*", [Parameter(Mandatory = $false)] [string]$InitialDirectory = [Environment]::GetFolderPath('Desktop') ) Add-Type -AssemblyName System.Windows.Forms $openDialog = New-Object System.Windows.Forms.OpenFileDialog $openDialog.Title = $Title $openDialog.Filter = $Filter $openDialog.InitialDirectory = $InitialDirectory $openDialog.CheckFileExists = $true $openDialog.CheckPathExists = $true $result = $openDialog.ShowDialog() if ($result -eq [System.Windows.Forms.DialogResult]::OK) { return $openDialog.FileName } return $null } |