首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PowerShell中终止脚本

在PowerShell中终止脚本
EN

Stack Overflow用户
提问于 2010-01-08 01:42:15
回答 10查看 1.1M关注 0票数 480

我一直在寻找一种在函数内发生不可恢复的错误时终止PowerShell (PS1)脚本的方法。例如:

代码语言:javascript
运行
复制
function foo() {
    # Do stuff that causes an error
    $host.Exit()
}

当然不存在$host.Exit()这样的东西。有$host.SetShouldExit(),但这实际上关闭了控制台窗口,这不是我想要的。我需要的是一个等同于Python的sys.exit()的东西,它可以简单地停止当前脚本的执行,而不会有更多的损失。

编辑:是的,就是exit。是啊。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-01-08 02:04:58

您应该使用the exit keyword

票数 452
EN

Stack Overflow用户

发布于 2014-05-17 03:19:17

我意识到这是一个老帖子,但我发现自己经常回到这个帖子,因为它是搜索这个主题时的热门搜索结果之一。然而,当我来的时候,由于信息的冲突,我总是留下更多的困惑。最终,我必须执行自己的测试才能弄清楚。所以这一次我将发布我的发现。

TL;DR大多数人都希望使用Exit来终止正在运行的脚本。但是,如果您的脚本只是声明稍后将在shell中使用的函数,那么您将希望在所述函数的定义中使用Return

退出vs返回vs中断

  • Exit:这将“退出”当前运行的上下文。如果您从脚本调用此命令,它将退出脚本。如果您从shell调用此命令,它将退出shell。

如果一个函数调用Exit命令,它将退出它所运行的任何上下文。因此,如果该函数仅从正在运行的脚本中调用,它将退出该脚本。但是,如果您的脚本仅仅声明了函数以便可以在当前shell中使用,并且您从shell运行该函数,那么它将退出shell,因为shell是运行包含Exit命令的函数的上下文。

注意:默认情况下,如果您右键单击脚本以在PowerShell中运行它,一旦脚本运行完毕,PowerShell将自动关闭。这与Exit命令或脚本中的任何其他内容都没有关系。这只是使用这种运行脚本的特定方法运行的脚本的默认PowerShell行为。对于批处理文件和命令行window.

  • Return:也是如此,这将返回到上一个调用点。如果您从脚本调用此命令(在任何函数之外),它将返回到shell。如果您从shell调用此命令,它将返回到shell (这是以前从shell运行的单个命令的调用点)。如果您从一个函数中调用此命令,它将返回到调用该函数的位置。

在返回的调用点之后执行的任何命令都将从该点继续执行。如果脚本是从shell调用的,并且它包含任何函数之外的Return命令,那么当它返回到shell时,就没有更多的命令要运行了,从而使以这种方式使用的Return本质上与Exit.

  • Break:相同,这将打破循环并切换大小写。如果您在没有循环或切换的情况下调用此命令,它将中断脚本。如果在嵌套在循环中的循环中调用Break,它只会中断调用它的循环。

Break还有一个有趣的特性,您可以在循环前面加上标签,然后即使在已标记的循环中的多个嵌套组中调用了Break命令,也可以中断已标记的循环。

While ($true) {#此处的代码将运行:myLabel While ($true) {#此处的代码将运行中断myLabel #此处的代码将不会运行}#此处的代码将不会运行}#此处的代码将不会运行}#此处的代码将运行}

票数 686
EN

Stack Overflow用户

发布于 2012-10-20 10:56:55

Exit也将退出PowerShell。如果您希望“突破”当前函数或脚本--请使用Break :)

代码语言:javascript
运行
复制
If ($Breakout -eq $true)
{
     Write-Host "Break Out!"
     Break
}
ElseIf ($Breakout -eq $false)
{
     Write-Host "No Breakout for you!"
}
Else
{
    Write-Host "Breakout wasn't defined..."
}
票数 89
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2022326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档