当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何制作现代 PowerShell 消息框

作者:精品下载站 日期:2024-12-14 13:12:08 浏览:13 分类:玩电脑

如何制作现代 PowerShell 消息框


您是否正在寻找一种图形方式来通知用户您的脚本或收集反馈?自从基于 Windows.MessageBox 的消息框的美好时光以来,世界已经发生了变化。但幸运的是,现代的 PowerShell 消息框可以胜任这项任务。如何?

在本教程中,您将学习两个更新且功能更强大的工具,可用于生成 PowerShell 消息框:Terminal.Gui 和 Avalonia。在这两个工具之间,你不会出错。

继续阅读并制作用户根本无法忽略的消息框!

先决条件

本教程将是一个实践演示。要继续操作,请确保您具备以下条件:

  • PowerShell 7+ - 本教程使用 PowerShell 7.3。
  • Fedora 计算机 - 本教程使用 Fedora 35(安装了 PowerShell)创建并启动基于 Terminal.Gui 的消息框,尽管这也适用于 Windows。
  • Windows 计算机 - 本教程使用 Windows 10 创建并启动基于 Avalonia 的消息框

通过 Terminal.Gui 制作 PowerShell 消息框

Terminal.Gui 工具提供终端用户界面 (TUI),可让您使用终端创建 PowerShell 消息框。但在创建 PowerShell 消息框之前,您必须首先在系统上安装 Terminal.Gui。

1. 登录到 Fedora 计算机,打开终端,然后运行下面的 pwsh 命令以访问 PowerShell 提示符。

pwsh

[玩转系统] 如何制作现代 PowerShell 消息框

2. 接下来,执行下面的 Install-Module cmdlet 以安装 ConsoleGuiTools 模块。通过此模块,您可以访问 PowerShell 中的 Terminal.Gui 工具。

Install-Module Microsoft.PowerShell.ConsuleGuiTools

如下所示,输入 Y 并按 Enter 键,以信任模块的源存储库并开始安装。

[玩转系统] 如何制作现代 PowerShell 消息框

3. 安装后,在您喜欢的文本编辑器中创建一个新文件,将以下脚本填充到该文件中,然后保存。您可以根据需要命名该脚本,但本教程的选择是prompt-test.ps1

下面的代码告诉 PowerShell 使用 Terminal.Gui.MessageBox 对象的 Query 方法启动消息框。 Query 是下面代码的重点,它至少需要三个参数,如下所示:

Query(title, message, buttons)
Arguments

描述

Title

对于本教程,消息框的标题设置为“重要”。

Message

要向应用程序的用户显示的文本。在本教程中,消息设置为“您喜欢 PowerShell 吗? ”。

Button

消息框中按钮的名称,在本例中为“是”和“否”。每个按钮都将根据其位置分配一个内部数值(0 和 1)。该值将返回到脚本以进行后续处理。

# Import the module
Import-Module Microsoft.PowerShell.ConsoleGuiTools

# Load the Terminal.Gui assembly
$module = (Get-Module Microsoft.PowerShell.ConsoleGuiTools -List).ModuleBase
Add-Type -Path (Join-path $module Terminal.Gui.dll)

# Initialise Terminal.Gui
[Terminal.Gui.Application]::Init()

# Create a message box and assign the result of a selection to a variable
$result = [Terminal.Gui.MessageBox]::Query("Important", "Do you love PowerShell?", @("Yes", "No"))

# Utilise the result of the selection
# Write output to the terminal window and close the message box
if ($result -eq 0)
{
    # Shutdown the GUI application gracefully
    [Terminal.Gui.Application]::shutdown()
    write-host("It's good you love PowerShell!")
}
if ($result -eq 1)
{
    # Shutdown the GUI application gracefully
    [Terminal.Gui.Application]::shutdown()
    write-host("Too bad, PowerShell is great. Give it a chance.")
}

? 除了创建脚本之外,请注意,您还可以直接从提示中调用消息框或其他可视用户界面元素。

4. 现在,切换到 PowerShell 提示符,然后运行以下命令以从工作目录 (.) 执行脚本 (*prompt-test.ps1*)

./prompt-test.ps1

如果脚本有效,屏幕上会出现一个小消息框,如下所示。

[玩转系统] 如何制作现代 PowerShell 消息框

5. 最后,选择一个选项,,然后查看您将在 PowerShell 提示符中得到什么响应。您可以使用鼠标或键盘进行导航。

[玩转系统] 如何制作现代 PowerShell 消息框

根据您选择的选项,您将在 PowerShell 提示符中收到相应的响应,如下所示。

[玩转系统] 如何制作现代 PowerShell 消息框

使用 Avalonia 创建 PowerShell 消息框

如果您更喜欢查看 Windows 消息框,Avalonia 是一个很好的选择。您将使用 Avalonia 生成一个消息框,它提供了一个完整的 GUI 窗口。

但首先,您必须将 NuGet 注册为包源。 Avalonia 和其他必要的软件包将通过 NuGet 下载。

登录到 Windows 计算机,以管理员身份打开 PowerShell,然后运行以下命令。此命令将 (Register-PackageSource) NuGet 注册为 MyNuget 下的包源(或您喜欢的任何名称)。

Register-PackageSource -Name MyNuGet -Location <https://www.nuget.org/api/v2> -ProviderName NuGet

[玩转系统] 如何制作现代 PowerShell 消息框

安装阿瓦洛尼亚

在利用 Avalonia(如 Terminal.Gui)之前,您首先必须在计算机上安装 Avalonia。

1. 执行下面的 Install-Package cmdlet,仅为您的用户帐户安装 netstandard.library 软件包。该软件包是 Avalonia 的依赖项。

以下命令打开 -SkipDependencies 开关,以避免非关键 netstandard.library 依赖项出现错误。

Install-Package -Name netstandard.library -Scope CurrentUser -SkipDependencies

出现提示时输入A并按 Enter 键确认安装,如下所示。

[玩转系统] 如何制作现代 PowerShell 消息框

2. 接下来,运行 Install-Package 仅为 CurrentUser 安装 avalonia 软件包。当前用户的安装允许您在没有提升的命令提示符的情况下继续进行。

Install-Package -Name avalonia -Scope CurrentUser

出现提示时确认安装,如下所示,您将看到一路安装的依赖项和软件包的列表。

[玩转系统] 如何制作现代 PowerShell 消息框

3. 现在,运行以下命令来安装 PSAvalonia 软件包,该软件包为 Avalonia 提供直接 PowerShell 绑定。

Install-Package -name psavalonia -scope CurrentUser 

[玩转系统] 如何制作现代 PowerShell 消息框

创建消息框

安装 Avalonia 及其依赖项后,您可以创建现代 PowerShell 消息框。您将创建一个 PowerShell 脚本,其功能与 Terminal.Guit 脚本类似,或者创建您的消息框。

1. 创建一个新文件,添加以下代码,并将其另存为 PowerShell 脚本。您可以根据自己的喜好命名脚本,但本教程使用 msgbox.ps1 作为脚本名称。

此代码的功能与 Terminal.Gui 的脚本类似,但这次,消息框是通过 XAML 设计的。

# Design a message box
$Xaml = '<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" d:DesignWidth="300" d:DesignHeight="200"
		Width="300"
		Height="200"
        x:Class="avaloniaui.MainWindow"
        Title="Important">
   <StackPanel>
	<TextBlock Margin="10" Name="msg" VerticalAlignment="Top" Width="200" Height="25"> Do you love PowerShell? </TextBlock>
	<Button Width="160" Name="button1">Yes</Button>
	<Button Width="160" Margin="10" Name="button2">No</Button>
	
    </StackPanel>
</Window>'

# Convert XAML description to Avalonia object
$window = ConvertTo-AvaloniaWindow -Xaml $Xaml

# Map Avalonia controls to PowerShell variables
$Button1 = Find-AvaloniaControl -Name 'button1' -Window $Window
$Button2 = Find-AvaloniaControl -Name 'button2' -Window $Window

# Handle responses once the message box is loaded. 
# Write to the terminal and close the message box.
$Button1.add_Click({
	write-host("It's good you love PowerShell!")
	$window.close()		
	})
$Button2.add_Click({
	write-host("Too bad, PowerShell is great. Give it a chance.")
	$window.close()		
	})
	
# Show message box
Show-AvaloniaWindow -Window $Window

2. 接下来,运行下面的 pwsh 命令来执行脚本 (msgbox.ps1)。

pwsh .\msgbox.ps1

3. 现在,从出现的消息框中选择任意选项。

[玩转系统] 如何制作现代 PowerShell 消息框

根据您选择的选项,适当的响应将返回到终端,如下所示。

[玩转系统] 如何制作现代 PowerShell 消息框

结论

创建 PowerShell 消息框的技能在 PowerShell 脚本中非常有用,无论是执行交互式任务还是通知用户。在本教程中,您发现了用于制作现代 PowerShell 消息框的工具(Terminal.Gui 和 Avalonia)。

为什么不进一步熟悉您在本教程中学到的工具呢?

使用 Terminal.Gui,尝试向消息框中添加额外的元素,例如复选框和菜单。或者,可以使用 Ironman Software 的终端 GUI 设计器来直观地设计消息框。对于 Avalonia,您可以使用更多控件,例如文本框、组合框和日历。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯