【发布时间】:2017-09-17 03:09:09
【问题描述】:
我正在尝试使用键盘快捷键启动 PowerShell 脚本。我当前的脚本(超级简单,只提示是/否弹出窗口)如下所示:
$a = new-object -comobject wscript.shell
$a.popup("Here's a test script", 0,"Title goes here", 4)
为了确保没有任何查找问题,我将脚本和脚本的快捷方式都放在了桌面上,即:
- C:\users\me\desktop\ShortcutTest.ps1
- C:\users\me\desktop\ShortcutTest - shortcut.ps1
快捷方式在属性中有如下设置:
目标:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File 'C:\Users\me\Desktop\ShortcutTest.ps1' 开始于:C:\Users\me\Desktop 快捷键:Ctrl + Alt + Q问题是当我按下快捷方式时,它成功启动了一个 PowerShell 窗口,但它立即关闭了实例。
到目前为止的故障排除
- 以管理员身份运行快捷方式,结果相同
- 更改快捷方式的位置,结果相同
- 更改实际脚本的位置,结果相同(它最初驻留在阻止脚本的服务器上)
- 切换快捷方式的“开始”和“目标”部分,结果相同
- 从快捷方式中的“目标”中删除 -File 参数会使 PowerShell 实例保持打开状态,因此我猜测我在脚本中或从快捷方式调用它时缺少某种形式的参数设置。
- 将脚本内容更改为简单的“Write-Host “Great success””仍会立即关闭 PowerShell 实例,这进一步让我怀疑是“Target”(-File 和 -ExecutionPolicy)中使用的参数遗漏了什么。
如果有人对我如何解决这个问题有任何建议,或者至少可以进一步排除故障,我们将不胜感激!
【问题讨论】:
-
"当我按下快捷方式时,它成功启动了一个 Powershell 窗口,但它立即关闭了实例。"你期待会发生什么?它运行脚本并且 shell 终止。您是说您希望脚本运行但控制台窗口在脚本完成后保留吗?
-
啊,抱歉不清楚 :) 脚本应该等待用户单击提示窗口中的其中一个框。手动运行脚本时,它会用是/否框提示用户,但是当我使用快捷方式运行它时,不会显示提示。
-
试试这个,它适用于我拥有的另一个文件:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle Hidden -ExecutionPolicy ByPass -File 'C:\Users \me\Desktop\ShortcutTest.ps1'
-
我认为你需要使用双引号。例如
-File "C:\Users\me\Desktop\ShortcutTest.ps1" -
你说的都对 :) 它需要双引号并使用 -WindowStyle Hidden,非常感谢!
标签: windows powershell keyboard-shortcuts