I have a power shell script that when run will prompt the user to:
- Select a folder location
- select a file name
- enter credentials
This then exports those credentials in a xml file. Although this requires 3 prompts to the user before is complete. Looking to find if there is a better way to approach this. For example, having a single prompt for the user.
###########################################################
# Create a file containing encrypted credentials
###########################################################
clear
Function Get-Folder($initialDirectory)
{
#User selected folder location
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")|Out-Null
$path = New-Object System.Windows.Forms.FolderBrowserDialog
$path.Description = "Select a folder"
$path.rootfolder = "MyComputer"
if($path.ShowDialog() -eq "OK")
{
$location += $path.SelectedPath
}
#User selected file name
[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
$title = 'File Name'
$msg = 'Please enter your file name'
$text = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)
#Open prompt for user to enter credentials and export to xml file
Get-Credential | Export-Clixml "$location\Credentials-$text.xml"
}
Get-Folder
1 Answer 1
Instead of letting the user (1) choose a folder and (2) choose a file name, you can just present the user with a Save File Dialog. It also warns the user if he tries to overwrite an existing file.
If the user cancels one of your dialogs, you should cancel the script rather than continue with invalid data.
$dialog = New-Object System.Windows.Forms.SaveFileDialog
$dialog.FileName = "Credentials.xml"
$dialog.Filter = "XML files (*.xml)|*.xml|All files|*.*"
if ($dialog.ShowDialog() -ne "OK")
{
exit
}
...
Get-Credential | Export-Clixml $dialog.FileName