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

admin3小时前百科知识4

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 的。

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

相关文章

香港服务器使用教程:如何绑定并发布你的网站?

企业如何在香港服务器上绑定并成功发布你的网站,让你的在线存在更上一层楼。第一步:选择合适的香港服务器在开始之前,首先要选择一家稳定可靠的香港服务器提供商。确保提供商具备良好的网络连接、安全性和技术支持...

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

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

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

三星手机视频广告拦截技巧_三星手机视频广告屏蔽法

三星S24 Ultra视频广告可通过五步关闭:一、关三星账户“获取新闻和特惠”及Bixby相关广告;二、禁用游戏中心、主题商店、Samsung Free等预装应用广告权限;三、限制第三方视频APP的悬...

小象超市官网访问地址_小象超市官方账号入口

小象超市官网访问地址_小象超市官方账号入口

小象超市官网访问地址是https://maicai.meituan.com/,系美团旗下自营即时零售平台,由北京三快科技有限公司运营,备案号京ICP备10211739号-23A,2023年12月由“美...

中国一年粮食总产量多少吨-2025年国家粮食产量

中国一年粮食总产量多少吨-2025年国家粮食产量

国家统计局12月12日发布数据显示,2025年,全国粮食产量14297.5亿斤,比上年增加167.5亿斤,增长1.2%,稳定在1.4万亿斤以上,全国粮食实现丰收。魏锋华:2025年农业经济形势稳中向好...

学习通官网直达登录入口下载-学习通网页登录入口v6.69.75

学习通官网直达登录入口下载-学习通网页登录入口v6.69.75

学习通官网直达登录入口为http://passport2.chaoxing.com/,支持手机号验证码、微信授权及学校统一认证等多种登录方式,具备跨终端同步、高清视频播放与模块化交互设计。学习通官网直...