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

admin6个月前 (04-05)云服务器138

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 在按下转义键时要做什么。我们将再次关闭该表单。

超全小说合集 10w+收藏文 热门小说合集 福利小说大合集 TXT小说合集 PC游戏合集 安卓游戏合集
游戏盒子下载 漫画app下载 小说app下载 影视app下载 AI聊天app下载

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

标签: Windows

相关文章

全球勒索软件和数据泄露席卷了OT和工业领域

由于保持运营的重要性,工业公司和公用事业公司更有可能付费,从而吸引更多的威胁团体并关注OT系统。去年,四分之三的工业企业遭受了勒索软件攻击,影响运营技术(OT)的攻击比以往任何时候都多——这表明工业部...

新加坡虚拟服务器的部署与管理策略

新加坡虚拟服务器的部署与管理策略,包括选择合适的服务提供商、配置服务器、安全管理、性能优化以及成本控制等几个方面。一、选择服务提供商选择服务提供商是部署虚拟服务器的第一步。新加坡拥有多家国际知名的服务...

企业寻找支持ASP的美国服务器:推荐与评估

对于使用ASP(Active Server Pages)技术构建网站的开发者来说,选择一个可靠、性能优越的服务器提供商尤为重要。由于ASP技术源自Microsoft,因此大多数支持ASP的服务器将基于...

香港云服务器购买平台的详细对比与推荐

企业在数字化时代,云服务器因其高效、便捷和可扩展性受到越来越多企业和个人用户的青睐。香港,作为亚洲的国际大都市,不仅拥有先进的互联网基础设施,还因其特殊的地理位置和政策环境,成为众多企业选择部署云服务...

韩国SK机房服务器租用建议

韩国SK机房服务器国作为韩国最大的数据中心服务提供商,其服务器租用服务备受关注。本文将为您介绍韩国SK机房服务器租用的相关知识和建议,帮助您更好地选择适合自己需求的服务器。1. 网络速度快:韩国作为亚...

如何在韩国成功搭建专属服务器?

于那些想要在韩国搭建专属服务器的人来说,本文将为您提供一些有用的指导和建议。要成功搭建专属服务器,您需要选择一个可靠的托管服务提供商。在韩国,有许多知名的托管服务提供商,如KT、SK电讯等。这些提供商...