private/uitool/Show-UiPathPicker.ps1

function Show-UiPathPicker {
    <#
    .SYNOPSIS
        Shows a file or folder picker dialog and returns the selected path.
    #>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [ValidateSet('File', 'Folder', 'SaveFile')]
        [string]$Mode,
        
        [string]$Title,
        
        [string]$Filter = 'All Files (*.*)|*.*',
        
        [string]$InitialDirectory
    )
    
    Add-Type -AssemblyName System.Windows.Forms -ErrorAction SilentlyContinue
    
    $result = $null
    
    switch ($Mode) {
        'File' {
            $dialog = [System.Windows.Forms.OpenFileDialog]::new()
            $dialog.Filter = $Filter
            $dialog.Multiselect = $false
            if ($Title) { $dialog.Title = $Title }
            if ($InitialDirectory -and (Test-Path $InitialDirectory)) {
                $dialog.InitialDirectory = $InitialDirectory
            }
            
            if ($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
                $result = $dialog.FileName
            }
            $dialog.Dispose()
        }
        
        'SaveFile' {
            $dialog = [System.Windows.Forms.SaveFileDialog]::new()
            $dialog.Filter = $Filter
            if ($Title) { $dialog.Title = $Title }
            if ($InitialDirectory -and (Test-Path $InitialDirectory)) {
                $dialog.InitialDirectory = $InitialDirectory
            }
            
            if ($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
                $result = $dialog.FileName
            }
            $dialog.Dispose()
        }
        
        'Folder' {
            $result = Show-ModernFolderPicker -Title $Title -InitialDirectory $InitialDirectory
        }
    }
    
    return $result
}