是否可以从PowerShell打开资源管理器窗口并将资源管理器中选定的路径存储到变量?获取从资源管理器菜单到PowerShell变量的文件夹路径
从PowerShell的
PS C打开资源管理器窗口:>探险
是否可以从PowerShell打开资源管理器窗口并将资源管理器中选定的路径存储到变量?获取从资源管理器菜单到PowerShell变量的文件夹路径
从PowerShell的
PS C打开资源管理器窗口:>探险
也许这个剧本是你想要什么:
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."
}
}
用途为:
$folder = Select-FolderDialog # the variable contains user folder selection
以上没有为我工作。运行Windows 7使用PowerShell第2版。 我确实发现以下,这也允许弹出和选择:
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."
}
}
万一别人有同样的问题。
工程,但有时有没有显示前面的对话的问题。 – Baodad 2013-08-08 01:19:39
我发现在选定的答案中使用反射会有点尴尬。下面的链接提供了一个更直接的方法
复制并粘贴相关代码:
Add-Type -AssemblyName System.Windows.Forms
$FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
[void]$FolderBrowser.ShowDialog()
$FolderBrowser.SelectedPath
只是想后的增编,我相信这是在两者之间缺少一个管|
:
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
和:
Out-Null
缺少哪个答案/代码片段?据我所知,至少在被接受的答案中有一条管道。 – 2017-05-30 22:50:34
您需要在param块之后移动程序集加载。 – 2012-07-10 12:16:41
@ShayLevy谢谢!现在修复。 – 2012-07-10 12:41:16
完美的工作,谢谢 – naveejr 2012-07-12 03:54:59