[玩转系统] 如何制作现代 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
2. 接下来,执行下面的 Install-Module
cmdlet 以安装 ConsoleGuiTools
模块。通过此模块,您可以访问 PowerShell
中的 Terminal.Gui 工具。
Install-Module Microsoft.PowerShell.ConsuleGuiTools
如下所示,输入 Y 并按 Enter 键,以信任模块的源存储库并开始安装。
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
如果脚本有效,屏幕上会出现一个小消息框,如下所示。
5. 最后,选择一个选项,是或否,然后查看您将在 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
安装阿瓦洛尼亚
在利用 Avalonia(如 Terminal.Gui)之前,您首先必须在计算机上安装 Avalonia。
1. 执行下面的 Install-Package
cmdlet,仅为您的用户帐户安装 netstandard.library
软件包。该软件包是 Avalonia 的依赖项。
以下命令打开 -SkipDependencies
开关,以避免非关键 netstandard.library
依赖项出现错误。
Install-Package -Name netstandard.library -Scope CurrentUser -SkipDependencies
出现提示时输入A并按 Enter 键确认安装,如下所示。
2. 接下来,运行 Install-Package
仅为 CurrentUser
安装 avalonia
软件包。当前用户的安装允许您在没有提升的命令提示符的情况下继续进行。
Install-Package -Name avalonia -Scope CurrentUser
出现提示时确认安装,如下所示,您将看到一路安装的依赖项和软件包的列表。
3. 现在,运行以下命令来安装 PSAvalonia
软件包,该软件包为 Avalonia 提供直接 PowerShell 绑定。
Install-Package -name psavalonia -scope CurrentUser
创建消息框
安装 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 消息框的工具(Terminal.Gui 和 Avalonia)。
为什么不进一步熟悉您在本教程中学到的工具呢?
使用 Terminal.Gui,尝试向消息框中添加额外的元素,例如复选框和菜单。或者,可以使用 Ironman Software 的终端 GUI 设计器来直观地设计消息框。对于 Avalonia,您可以使用更多控件,例如文本框、组合框和日历。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag