is it possible to open a explorer window from powershell and store the path selected in the explorer, to a variable?
to open explorer window from powershell
Maybe this script is what you want:
Function Select-FolderDialog
{
param([string]$Description="Select Folder",[string]$RootFolder="Desktop")
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
Out-Null
$objForm = New-Object System.Windows.Forms.FolderBrowserDialog
$objForm.Rootfolder = $RootFolder
$objForm.Description = $Description
$Show = $objForm.ShowDialog()
If ($Show -eq "OK")
{
Return $objForm.SelectedPath
}
Else
{
Write-Error "Operation cancelled by user."
}
}
Use as:
$folder = Select-FolderDialog # the variable contains user folder selection
I found the use of reflection in the selected answer to be a little awkward. The link below offers a more direct approach
http://www.powershellmagazine.com/2013/06/28/pstip-using-the-system-windows-forms-folderbrowserdialog-class/
Copy and pasted relevant code:
Add-Type -AssemblyName System.Windows.Forms
$FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
[void]$FolderBrowser.ShowDialog()
$FolderBrowser.SelectedPath
Just wanted to post an addendum, I believe there is a pipe |
missing from in-between:
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
and:
Out-Null
The above did not work for me. Running Windows 7 with Powershell Version 2. I did find the following, which did allow the pop-up and selection:
Function Select-FolderDialog
{
param([string]$Description="Select Folder",[string]$RootFolder="Desktop")
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") Out-Null
$objForm = New-Object System.Windows.Forms.FolderBrowserDialog
$objForm.Rootfolder = $RootFolder
$objForm.Description = $Description
$Show = $objForm.ShowDialog()
If ($Show -eq "OK")
{
Return $objForm.SelectedPath
}
Else
{
Write-Error "Operation cancelled by user."
}
}
Just in case others have the same issues.
Here is a solution that opens explorer dialog window, asking user to select a folder. Then stores the folder path inside a variable named "path":
Add-Type -AssemblyName System.Windows.Forms
$browser = New-Object System.Windows.Forms.FolderBrowserDialog
$null = $browser.ShowDialog()
$path = $browser.SelectedPathode