如何在 PowerShell 脚本中添加退出机制

admin5个月前百科知识268

PowerShell 脚本通常会运行直到完成,但构建一种机制以便脚本在完成其预期任务后正常终止可能会很有用。

1、退出基于文本的脚本

如果您的脚本是基于文本的,那么添加终止机制非常简单。只需在 PowerShell 中使用Exit命令就会提示脚本终止。

例如,假设您有一个包含以下命令的脚本:

Write-Host ‘Line 1’

Write-Host ‘Line 2’

Exit

Write-Host ‘Line 3’

该脚本将显示短语“Line 1”和“Line 2”,但永远不会显示“Line 3”,因为 exit 命令会导致脚本在到达“Line 3”命令之前终止。

最后一行代码不执行,因为脚本在到达该点之前终止。

当然,您通常不会在 PowerShell 脚本中的随机点插入 Exit 命令。相反,您可以根据用户输入使用退出命令。例如,您可以显示类似“按 Y 继续或 N 退出”的提示。

用于创建此类提示的代码可能如下所示:

$Prompt = Read-Host 'Do you want to continue? Press Y for Yes or N to exit'

Switch ($Prompt)

{

Y {Write-Host 'The script is continuing'}

N {Exit}

}

Write-Host 'The script executes yet another instruction'

在这种情况下,Read-Host 命令会提示用户输入。如果用户按 Y,则将执行几个Write-Host 命令。如果用户按 N,则脚本终止。

您可以创建一个提示,为用户提供退出脚本的选项。

2、退出基于 GUI 的脚本

正如您所看到的,终止基于文本的脚本很简单 – 只需在所需的终止点插入 Exit 命令即可。不过,让我们看看如何终止基于 GUI 的脚本。

以下是一个简单的基于 GUI 的脚本的源代码:

Add-Type -AssemblyName System.Windows.Forms


# Create the form

$form = New-Object Windows.Forms.Form

$form.Text = “Hello World Popup”

$form.Size = New-Object Drawing.Size(500, 500)

$form.FormBorderStyle = [Windows.Forms.FormBorderStyle]::FixedDialog

$form.StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen

$Form.KeyPreview = $True

$Form.Add_KeyDown({if ($_.KeyCode -eq “Escape”)

 {$Form.Close()}})


# Create the label to display “Hello World”

$label = New-Object Windows.Forms.Label

$label.Text = “Hello World”

$label.Font = New-Object Drawing.Font(“Arial”, 14, [Drawing.FontStyle]::Bold)

$label.AutoSize = $true

$label.Location = New-Object Drawing.Point(100, 40)

$label.ForeColor = [System.Drawing.Color]::Black


$Button1 = New-Object System.Windows.Forms.Button

$Button1.Location = New-Object System.Drawing.Size (200,250)

$Button1.Size = New-Object System.Drawing.Size(80,30)

$Button1.Font=New-Object System.Drawing.Font(“Lucida Console”,14,[System.Drawing.FontStyle]::Regular)

$Button1.BackColor = “LightGray”

$Button1.Text = “Exit”

$Button1.Add_Click({

$Form.Close()

})


# Add the label to the form

$form.Controls.Add($label)

$Form.Controls.Add($Button1)


# Display the form

$form.ShowDialog()

该脚本在 GUI 界面中显示“Hello World”一词。它与您之前见过的任何其他 Hello World 脚本的唯一不同之处在于 GUI 还包含一个退出按钮,如下图所示。

这个简单的 Hello World 脚本包含一个退出按钮。

在功能层面上,该脚本非常简单,并且与任何其他基于 PowerShell GUI 的脚本一样工作。我首先加载必要的程序集。从那里,我创建了一个表单对象、一个标签对象(Hello World 文本)和一个按钮对象。然后,我告诉 PowerShell 将标签对象和按钮对象添加到表单并显示表单。

现在我已经概述了脚本的工作原理,让我们检查一下退出按钮。每当您在 PowerShell 中创建按钮对象时,您都可以选择将单击操作与按钮关联。以下是与单击操作相关的命令:

$Button1.Add_Click({

$Form.Close()

})

换句话说,当用户单击“退出”按钮时,PowerShell 只是执行一条指令来关闭表单。通常,这足以终止脚本,但如果您创建了一个运行大量非 GUI 相关指令的高度复杂的脚本,则可能还必须在右括号之前包含 exit 命令。这样做看起来像这样: 

$Button1.Add_Click({

$Form.Close()

出口

})

3、退出键终止

脚本中还有一个我尚未讨论的附加功能。我已将其配置为在用户按下键盘上的转义键时终止。此功能是通过创建表单对象部分中的三行代码来实现的。下面是三行代码:

$Form.KeyPreview = $True

$Form.Add_KeyDown({if ($_.KeyCode -eq "Escape")

 {$Form.Close()}})

第一行告诉表单监视按键操作。您会注意到这是表单本身的函数,而不是表单上的对象。换句话说,不需要提示用户输入或创建与输入相关的对象。

第二行告诉 PowerShell 我们对哪个键感兴趣。在本例中,我们希望在用户按下 Escape 键时采取操作。

第三行告诉 PowerShell 在按下转义键时要做什么。我们将再次关闭该表单。

正如您所看到的,您可以通过多种不同的方式优雅地终止 PowerShell 脚本。您使用的技术很大程度上取决于脚本是基于文本的还是基于 GUI 的。

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

我的世界免费秒玩入口链接_MCJS小游戏免费秒玩网站入口

我的世界免费秒玩入口链接_MCJS小游戏免费秒玩网站入口

我的世界免费秒玩入口链接是https://classic.minecraft.net/,玩家可通过浏览器直接访问,输入用户名即可进入游戏,支持多设备适配与云端加载,无需安装客户端,操作简单流畅,兼容主...

Boss直聘官网网页版入口_BOSS直聘在线招聘平台

Boss直聘官网网页版入口_BOSS直聘在线招聘平台

boss直聘官网网页版入口是https://www.zhipin.com/,支持直接输入网址、搜索引擎官网链接、地域分站(如https://www.zhipin.com/shanghai/)及手机扫码...

QClaw需要Token收费吗-QClaw目前支持连接哪些社交平台

腾讯官宣QClaw全面开放2026年3月20日,腾讯正式官宣旗下基于开源项目OpenClaw打造的本地AI助手QClaw(俗称“龙虾”)开启全量公测、全面开放,用户无需邀请码,通过官网下载最新版本,最...

夸克搜索如何查看网页源代码-夸克浏览器获取当前网页源代码的方法

夸克搜索如何查看网页源代码-夸克浏览器获取当前网页源代码的方法

在使用夸克浏览器浏览网页时,偶尔我们需要查看目标页面的原始 html 源码——这对前端开发者、网页技术初学者,或从事网络信息分析的用户而言,是一项实用且高频的操作。那么,如何借助夸克浏览器快速获取当前...

Jump App是什么-Jump App功能介绍

Jump App是什么-Jump App功能介绍

Jump App功能介绍当前版本:v3.30.1下载地址:立即下载夸克网盘下载:http://pan.quark.cn/s/33e2cc294fa01、种草&社区活动Jump 会时不时为玩家推...

mt管理器2026最新版本怎么提取安装包?mt管理器最新版使用教程

mt管理器2026最新版本怎么提取安装包?mt管理器最新版使用教程

mt管理器2026最新版本怎么提取安装包? 1、在多多站下载打开mt文件管理器软件后,进入到首页 2、点击左上角的三个横线按钮...