如何使用从Powershell中选择的文件调用Windows资源管理器?

时间:2015-08-14 16:30:29

标签: powershell powershell-v2.0

我在编写第一个基本的PowerShell实用程序时遇到了问题。我需要打开一个选择了文件的资源管理器窗口,但无法正确获取命令的语法。

我在SO上发现了这个答案,https://stackoverflow.com/a/12162855/957246并阅读了关于外部命令http://edgylogic.com/blog/powershell-and-external-commands-done-right/的优秀博客 - 但仍然无法使其发挥作用。

这是我的示例脚本(test.ps1):

$myFile = "C:\Projects\Scripts\any.txt"
# The backslash-backticks are to escape the speech marks, once for PowerShell and then again for DOS
& "C:\Projects\Scripts\EchoArgs.exe" /select",\`"$myFile\`""
& "explorer" /select",\`"$myFile\`""

..这是调用它的批处理文件,以防我调用PowerShell脚本的方式出现问题:

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& 'C:\Projects\Scripts\test.ps1'"

我尝试了几种不同的组合,echoargs的输出表明语法是正确的(假设探索器的参数字符串被视为单个字符串)但是我尝试只是在“我的文档”上打开一个资源管理器窗口并且某些地方忽略/抛弃参数。

有关explorer.exe开关的MSDN页面上有一点说逗号是一个空参数,也许这是我需要通过不同格式化命令来提供的东西?

2 个答案:

答案 0 :(得分:2)

使用PowerShell的批处理命令有什么意义?你唯一会把自己弄得那么迷惑......就我而言。

$myFile = "C:\Projects\Scripts\any.txt"
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.InitialDirectory = Split-Path $myFile -Parent 
$OpenFileDialog.FileName = Split-path $myfile -leaf
$OpenFileDialog.ShowDialog() | Out-Null

修改

如果您需要继续使用资源管理器路线,请尝试以下方法:

Start-Process -FilePath C:\Windows\explorer.exe -ArgumentList "/select, ""$myFile"""

答案 1 :(得分:0)

你也可以使用:

$dir = "\\PATH\TO\YOUR\DIRECTORY"
C:\Windows\explorer.exe "/select,$dir"