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

mas*_*asi 3 powershell command-line powershell-3.0

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

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

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

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

Rom*_*min 5

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

cmd /c FType Microsoft.PowerShellScript.1
Run Code Online (Sandbox Code Playgroud)

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

cmd /c @"
FType Microsoft.PowerShellScript.1=$PSHOME\powershell.exe -NoExit . "'%1'" %*
"@
Run Code Online (Sandbox Code Playgroud)

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


在PS v2中调用脚本的一些细节和一种好方法就在这里.不幸的是它在PS v3中被打破了 - 提交的问题.