环境: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文件夹。
答案 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
。