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

在PowerShell中终止脚本
EN

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

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

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

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

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

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-01-07 18:04:58

您应该使用the exit keyword

票数 452
EN

Stack Overflow用户

发布于 2014-05-16 19: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 02:56:55

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

代码语言:javascript
运行
AI代码解释
复制
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

复制
相关文章
Linux内核网络udp数据包发送(二)——UDP协议层分析
本文分享了Linux内核网络数据包发送在UDP协议层的处理,主要分析了udp_sendmsg和udp_send_skb函数,并分享了UDP层的数据统计和监控以及socket发送队列大小的调优。
Linux阅码场
2021/08/26
6K0
Linux内核网络udp数据包发送(一)
本文首先从宏观上概述了数据包发送的流程,接着分析了协议层注册进内核以及被socket的过程,最后介绍了通过 socket 发送网络数据的过程。
Linux阅码场
2021/08/26
4.4K0
lwip udp 发送_lwip udp发送
1、void udp_input(struct pbuf *p, struct netif *inp)
全栈程序员站长
2022/10/04
3.8K0
lwip udp 发送_lwip udp发送
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
2. UDP 发送和接收 : 计算机 A 向 计算机 B 的 X 端口发送消息 , B 不一定能接收到 , B 能收到并处理该消息的前提是 , B 当前正在监听 X 端口 ;
韩曙亮
2023/03/27
7K0
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket  | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )[通俗
2. UDP 发送和接收 : 计算机 A 向 计算机 B 的 X 端口发送消息 , B 不一定能接收到 , B 能收到并处理该消息的前提是 , B 当前正在监听 X 端口 ;
全栈程序员站长
2022/08/31
6.6K0
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )[通俗
python伪造udp数据包
#!/usr/bin/python #coding:utf-8 import socket import struct from random import randint def checksum(data): s = 0 n = len(data) % 2 for i in range(0, len(data) - n, 2): s += ord(data[i]) + (ord(data[i + 1]) << 8) if n: s +
py3study
2020/01/10
2.2K0
Linux内核网络UDP数据包发送(四)——Linux netdevice 子系统
在继续分析 dev_queue_xmit 发送数据包之前,我们需要了解以下重要概念。
Linux阅码场
2021/08/26
3.7K0
Linux内核网络UDP数据包发送(三)——IP协议层分析
Linux内核网络 UDP 协议层通过调用 ip_send_skb 将 skb 交给 IP 协议层,本文通过分析内核 IP 协议层的关键函数来分享内核数据包发送在 IP 协议层的处理,并分享了监控IP层的方法。
Linux阅码场
2021/08/26
3.3K0
udp发送广播消息
import socket if __name__ == '__main__': # 创建udpsocket udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 设置socket选项, 开启发送广播消息的功能 # 1. SOL_SOCKET:当前socket # 2. SO_BROADCAST: 广播选项 # 3. True:开启发送广播消息功能 udp_socket.set
汪凡
2019/03/01
2.7K0
原始UDP封包发送
发送原始UDP封包时: 1 以IPPROTO_UDP 为协议类型创建一个原始套接字,打开原始套接字上的IP_HDRINCL选项 2 构建UDP封包,要先设置IP头,设置UDP头,最后UDP净荷数据。 3 初始化完整的UDP封包之后,调用sendto函数即可将他发送。 计算UDP封包校验和的过程如下: void ComputeUdpPseudoHeaderChecksum( IPHeader *pIphdr, UDPHeader *pUdphdr, char *payloa
用户1154259
2018/01/17
1.9K0
请求数据包从发送到接收,都经历什么?
之前讲了「从输入 URL 再到浏览器成功看到界面」中的域名是如何变成 IP 地址的,了解了 DNS 相关的东西。这篇文章就聊聊发生在 DNS 解析之后的操作——建立连接。也就是我们常说的三次握手。
SH的全栈笔记
2022/08/17
8850
请求数据包从发送到接收,都经历什么?
请求数据包从发送到接收,都经历什么?
之前讲了「从输入 URL 再到浏览器成功看到界面」中的域名是如何变成 IP 地址的,了解了 DNS 相关的东西。这篇文章就聊聊发生在 DNS 解析之后的操作——建立连接。也就是我们常说的三次握手。
冬夜先生
2021/10/08
8700
iPhone发送短信实现
首先在程序中导入MessageUI.framework。import头文件:#import "DeviceDetection.h"
用户7108768
2021/10/29
3.8K0
数据包发送与嗅探
实验过程中采用过libnet与libpcap,最后全部转为Raw Socket发送与嗅探。
公众号guangcity
2019/09/20
2.7K0
数据包发送与嗅探
UDP协议源码解析之发送
UDP不是面向连接的协议,发送数据的时候指定目的地址的信息即可以发送。下面是入口函数的代码。
theanarkh
2019/03/06
1.2K0
UDP协议发送/接收数据实现
UDP 是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接,简单来说,当客户端向接收端发送数据时,客户端不会确认接收端是否存在,就会发出数据。同样接收端在接收数据时,也不会向发送端反馈是否收到数据 由于使用 UDP 协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据传输 例如:视频会议通常采用 UDP 协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。但是在使用 UDP 协议传送数据时,由于 UDP 的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用 UDP 协议
ITer.996
2022/11/22
2.6K0
UDP协议发送/接收数据实现
UDP发送大型文件_不丢包[通俗易懂]
1:如果对文件要求不高的话 ,可以使用UDP,UDP在实际测试中,丢包还是听验证的,但是效率高
全栈程序员站长
2022/09/14
5K0
UDP发送大型文件_不丢包[通俗易懂]
Socket网络通信之发送数据包
鉴于我被那些吹牛皮的浪费一下午的时间的惨痛经历,我就明说了,我这篇是基于结构体形式的、客户端请求服务器的、服务器接收并发送应答包的,一篇博客。 如果不是你所需要的,可以换别篇了。
看、未来
2020/08/26
1.6K0
Windows下底层数据包发送实战
  所谓“底层数据包”指的是在“运行”于数据链路层的数据包,简单的说就是“以太网帧”,而我们常用的Socket只能发送“运行”在传输层的TCP、UDP等包,这些传输层数据包已经能满足绝大部分需求,但是有些时候还是需要发送底层数据包的(例如SYN扫描),那么如何发送呢?
战神伽罗
2019/07/24
3.2K0
Windows下底层数据包发送实战
教你动手写UDP协议栈-DHCP数据包解析<2>
DHCP报文属于UDP报文,DHCP协议包含在UDP协议栈的用户数据部分。如下图红框部分:
Rice加饭
2022/05/10
1K1
教你动手写UDP协议栈-DHCP数据包解析<2>

相似问题

iPhone上不发送UDP数据包

14

从铬发送udp数据包

11

从android平台发送UDP数据包

10

从特定ip发送udp数据包

1119

从Wireshark / tshark发送UDP数据包

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档