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

admin2个月前百科知识41

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

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

相关文章

yandex登录入口外贸_yandex入口外贸日报表

yandex登录入口外贸_yandex入口外贸日报表

Yandex登录入口外贸路径为https://yandex.com/,具备多语言关键词触达、地图客户核查、广告数据回传、本地化内容适配及自动化日报表五大核心功能。Yandex登录入口外贸在哪里?这是不...

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

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

192.168.1.1手机进入(手机登录路由器管理后台)

192.168.1.1手机进入(手机登录路由器管理后台)

很多人都会遇到过以下的几种情况,家里的网络不知道从什么时候开始,网速变得比之前慢;朋友来家里想连一下无线,你密码不记得了;无线网络很多个,不知道哪个是自...

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

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

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

汽水音乐官网网页端入口地址_汽水音乐网页版在线音乐页面

汽水音乐官网网页端入口地址_汽水音乐网页版在线音乐页面

汽水音乐官网网页端入口地址是https://music.douyin.com/,具备模块化首页、滑动歌词、常驻播放器、深色模式等交互体验,支持抖音账号一键同步、跨设备实时进度同步、收藏即时生效及设备安...

如何使用Windows内存诊断测试您的RAM内存

如果您的Windows计算机经常崩溃、死机或出现可怕的蓝屏死机,则它的物理内存可能有缺陷。A5互联教您Windows7到Windows11有一个内置工具可以帮助您对此进行测试。使用Windows内...