通过双击启动它时,Powershell脚本不起作用

时间:2012-12-07 11:15:10

标签: powershell command-line powershell-v3.0

执行powershell脚本时我遇到了一些奇怪的行为。

  • 当我使用ISE运行我的脚本时,它运行正常。
  • 当我打开Powershell.exe并运行我的脚本时,它运行正常。
  • 当我打开cmd并使用powershell.exe -noexit ./myscript.ps1启动我的脚本时,myscript工作正常。

当我双击myscript时,powershell打开几毫秒,我看到它显示一些错误(红色字体)并且powershell窗口关闭。由于powershell窗口快速关闭,我无法追踪导致此问题的错误。 我甚至在我的漏洞脚本周围尝试了一个大的try-catch块,捕获任何[Exception]并将其写入日志文件。但是:未生成日志文件(未调用catch)。

如何追踪该问题?什么可能导致麻烦? 请注意,我的执行政策设置为不受限制。

6 个答案:

答案 0 :(得分:5)

在尝试使用此建议之前,请先调用此设置以查看当前设置(如果您想稍后恢复):

cmd /c FType Microsoft.PowerShellScript.1

然后调用它(请注意,您将更改“从资源管理器”调用脚本的方式):

cmd /c @"
FType Microsoft.PowerShellScript.1=$PSHOME\powershell.exe -NoExit . "'%1'" %*
"@

然后双击脚本,它不应该退出,-NoExit可以解决问题。查看您的错误消息并解决问题。 但是现在所有的脚本都是“从资源管理器”调用的,所以它们的控那么你可以 从上面的命令中删除-NoExit并再次运行它或恢复您的 原始设置。


在PS v2中调用脚本的一些细节和一种好方法是here。 不幸的是,它在PS v3中被打破 - submitted issue

答案 1 :(得分:1)

默认情况下,出于安全原因,双击.ps1文件时,操作为:编辑文件,而不是运行文件。
执行脚本:右键单击它并选择使用powershell运行

答案 2 :(得分:1)

我也无法通过双击脚本来运行脚本,尽管手动运行脚本没有问题。我发现问题出在路上。当我从包含空格的路径运行脚本时,例如:

C:\ Users \ john doe \ Documents \ Sample.ps1

scipt无法运行。将脚本移至:

C:\ Scripts \ Sample.ps1

没有空格的问题就解决了。

答案 3 :(得分:0)

这很可能是您的本地执行政策的问题。

默认情况下,Powershell配置为不运行未签名的脚本(甚至是本地脚本)。如果您没有签署脚本,那么在Windows中更改默认的双击“操作”将不起作用 - Powershell将打开,读取执行策略,检查脚本的签名,找不到,将因错误而中止。

在Powershell中:

Help about_execution_policies

为您提供所有血腥的详细信息,以及允许运行未签名脚本的方法(在合理范围内 - 您可能不想运行远程的,只有您保存到系统中的那些)。

编辑:我在你的问题的尾部看到你已经将执行策略设置为'不受限制',这应该允许脚本运行。但是,对于遇到执行策略问题的其他人来说,这可能是有用的信息。

答案 4 :(得分:0)

如果你发现错误,你很可能会看到这个

  

无法加载文件。文件不是   数字签名。该脚本不会在系统上执行。请   有关详细信息,请参阅“Get-Help about_signing”。

因为您可以从自己开始的shell中运行它,而不是用鼠标右键单击“Run With PowerShell”,我打赌你有x64系统。手动启动配置执行策略的PowerShell的一个版本,右键单击启动其他版本的PowerShell。

尝试启动版本x64和x86版本,并检查每个

中的安全策略
Get-ExecutionPolicy

答案 5 :(得分:0)

我处于与问题所述完全相同的情况:我的脚本在任何地方都可以使用,除非双击。*当我双击Powershell时,窗口会打开,但是一秒钟左右就会关闭。我的执行策略也设置为不受限制。

我尝试了有关FType Microsoft.PowerShellScript.1的选定答案,但没有任何改变。

我发现的唯一解决方案是解决方法:创建一个启动Powershell的bat文件。

  1. 创建文件,然后复制并修改路径:powershell.exe -File "C:\Users\user\script\myscript.ps1"
  2. 将其另存为.bat
  3. 双击蝙蝠

    • 我还使用.ahk用快捷方式启动我的Powershell,当直接指向Powershell时,它不起作用。我必须指向.bat