使用Windows资源管理器右键单击所选文件夹/驱动器上的脚本

时间:2014-10-30 13:31:06

标签: powershell windows-7

环境:Windows 7

Scott的直接文章的帮助下,我能够拥有" PowerShell Here"作为Windows资源管理器的右键单击项。

右击" PowerShell Here"打开一个powershell命令提示符,将所选文件夹作为当前工作目录。

但我想要一点点不同,我无法做到 - 在打开powershell提示符的地方,我想运行一个powershell脚本,将参数作为选定的驱动器/文件夹/文件名!

所以,我更新了以下一行" powershellhere.inf"文件,

;existing one
;HKCR,Drive\Shell\PowerShellHere\command,,,"""C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe"" -NoExit ""cd '%1'"""

;updated one, added -Command <ScriptFile>
HKCR,Drive\Shell\PowerShellHere\command,,,"""C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe"" -Command d:\temp.ps1 -NoExit ""cd '%1'"""

但是当我右键单击并选择&#34; PowerShell Here&#34;时,它没有在所选的驱动器/文件夹/文件中运行脚本,它在C:\ Windows中运行\ System32文件夹。

2 个答案:

答案 0 :(得分:1)

我相信您正在寻找的字符串:

"""C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe"" -NoExit -File ""C:\temp\test.ps1"" ""'%1'""" 

-NoExit必须在-File之前,它被作为ps1文件的参数被选中。您还需要放置完整的文件路径。我确定你可以使用环境变量。在我的脚本中,我只有Write-Host $args[0]输出路径。

我首先遇到了传递路径的问题。我认为单引号不是我期望它们在脚本中的那些。我的脚本现在成功更改目录。 test.ps1的内容

$location = $args[0].Trim("'")
Write-Host "Path is valid = $(Test-Path $location)"
Set-Location $location 

答案 1 :(得分:0)

使用-File代替-Command并删除cd内容:

HKCR,Drive\Shell\PowerShellHere\command,,,"""C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe"" -File d:\temp.ps1 -NoExit

-Command用于命令行上的文字命令。如果您遇到问题,可能还需要设置-ExecutionPolicy

如果您不希望在执行脚本后提示留下来,请删除-NoExit