[玩转系统] 在 PowerShell 中按任意键继续 [6 种方式]
作者:精品下载站 日期:2024-12-14 05:25:15 浏览:14 分类:玩电脑
在 PowerShell 中按任意键继续 [6 种方式]
PowerShell集成脚本环境(ISE)和命令行控制台的解决方案
使用Read-Host
Cmdlet
使用Read-Host
命令在PowerShell中启用按任意键继续
。
使用读取主机 Cmdlet:
Read-Host -Prompt "Press any key to continue..."
输出 :
Press any key to continue...: pressed
pressed
Read-Host
cmdlet 是最常用且易于理解的。我们用它来暂停执行并提示用户从 PowerShell 控制台获取输入行。请记住,我们必须按 Enter 才能退出暂停模式。
此处,-Prompt
参数用于指定提示文本,允许用户键入字符串。如果字符串包含空格,则将其括在引号内。
我们还可以使用 Read-Host
cmdlet 提示用户获取安全数据,例如密码,因为我们可以使用 -AsSecureString
-AsSecureString 将接收到的输入字符串保存为安全字符串code>参数如下:
将 Read-Host 与 -AsSecureString 结合使用:
Read-Host "Enter a Password" -AsSecureString
输出 :
Enter a Password: ****
请记住,Read-Host
只能接受 1022
个字符作为用户给出的输入。
使用消息框 UI
当我们只想启用一个键在 PowerShell 中继续时,这种方法很实用。因此,为了允许:
- 将
New-Object
与-ComObject
参数结合使用来指定COM
对象的编程标识符。 - 使用
.Popup()
函数在弹出窗口中显示文本。
使用消息框用户界面:
$Shell = New-Object -ComObject "WScript.Shell"
$Button = $Shell.Popup("Press OK to continue.", 0, "Hi", 0)
我们可以使用 New-Object cmdlet 创建 COM 对象或 .NET 框架的实例。我们可以编写 COM
对象的 ProgID
或 .NET 框架类的类型。
对于上面的代码围栏,我们使用 New-Object
创建 COM
对象的实例。然后,我们使用 New-Object
cmdlet 指定 -ComObject
参数来写入 COMProgID
) /code> 对象,它是 WScript.shell
并将引用保存在 $Shell
变量中。
接下来,我们使用 Popup()
方法在弹出消息框中显示文本。我们只能通过将 Popup()
方法与 WshShell
对象链接来使用它,在我们的例子中是 $Shell
。 .Popup()
方法有四个值;下面我们来了解一下它们:
strText
- 包含一个字符串类型的值,它是我们的弹出消息框中显示的文本消息。我们使用按确定继续
作为strText
参数的值。nSecondsToWait
- 它是一个可选参数,包含一个数值,表示显示弹出消息框的最长时间(以秒为单位)。如果此参数设置为默认值0
,则消息框将一直可见,直到用户按OK
或X
。如果用户从键盘上按 Enter,消息框也将关闭。strTitle
- 它还保存一个字符串类型值,用作弹出消息框的标题。nType
- 一个可选参数,它保存一个数值,表示我们要在弹出消息框中使用的图标/按钮的类型。例如,我们使用0
来显示OK
按钮。您可以在此处找到不同类型的控件(按钮)和图标的不同十进制值。
最后,我们使用 $Button
来保存一个数值,该数值由 .Popup()
方法返回。该数值表示用户单击以关闭弹出消息框的按钮数量。
注意:我们还可以为nType
参数指定十六进制值。
到目前为止,我们已经了解了适用于 PS-ISE(PowerShell 集成脚本环境)、图形用户界面和前端托管的各种方法。但是,以下几种方法仅适用于 PowerShell 命令行控制台。
PowerShell 命令行控制台解决方案
使用带/不带[void]
的ReadKey()
方法
使用 ReadKey()
方法在 PowerShell 中启用按任意键继续
。
将 ReadKey() 与 void 一起使用:
[void][System.Console]::ReadKey($true)
上面的命令会等待,直到用户按任意键才能继续。请注意,此命令不接受单个修饰键(Alt、Ctrl 和 Shift)。
让我们把这个命令分解成几个部分,以便更清楚地了解它。首先,ReadKey($true)
等待,这意味着在发出 ReadKey
方法的线程上被阻塞,并获取用户按下的功能或字符键。
这里,功能键或字符键可以是单个或与修饰键(Alt、Ctrl和Shift)组合。但是,如果仅按任意修饰键,则不会导致 ReadKey 方法返回。
我们将 $true
参数传递给 ReadKey()
方法,因为我们不想在控制台窗口中显示按下的键。但这是可选的;如果我们要在控制台窗口中显示按下的键,我们可以省略此参数或传递 $false
。请参阅以下示例。
将 ReadKey() 与 $false 参数一起使用:
[void][System.Console]::ReadKey($false)
使用不带任何参数的 ReadKey():
[void][System.Console]::ReadKey()
我们使用静态成员运算符 (::
) 来调用 .NET 框架的名为 System.Console
的静态类。我们还可以使用 ::
运算符来调用 .NET 框架的静态属性。现在,什么是 System.Console?
在 .NET 框架中,我们有一个名为 Console
的类,位于 System
命名空间中。 System.Console 类允许我们以编程方式访问控制台应用程序中的 stdin、stderr 和 stdout。这里,stdin
、stderr
和 stdout
表示控制台应用程序的输入、错误和输出流。
现在的问题是,为什么我们要使用[void]
?在回答这个问题之前,请使用以下不带 [void]
的命令并查看其输出。
使用不带 void 的 ReadKey():
[System.Console]::ReadKey($true)
输出 :
KeyChar Key Modifiers
------- --- ---------
5 NumPad5 0
看,我们正在获取有关按下的键的信息。现在,尝试回忆一下我们在哪里了解到,当我们不想显示有关按下的键的数据时,会将 $true
参数传递给 ReadKey()
方法。控制台,但上面的示例的行为方式完全不同;为什么?
这是因为任何输出或返回某些数据的表达式或命令都会隐式显示到输出流(也称为成功流),默认情况下输出流会发送到主机,即运行 PowerShell 会话的终端(控制台窗口)。
如果我们不想输出该数据,则必须抑制它。为了抑制,我们有多种选择,其中包括 ... | Out-Null
、... > $null
、[void] (...)
和 $null=...
.因此,我们使用[void]
来抑制[System.Console]::ReadKey($true)
返回的数据。请注意,[void]
表示预先抑制输出的意图。
现在,考虑一种情况,我们必须显示按下的键和相关数据,这些数据以 System.ConsoleKeyInfo 对象的形式存储。在这种情况下,我们使用以下命令。
使用 ReadKey() 方法:
[Console]::ReadKey()
输出 :
g
KeyChar Key Modifiers
------- --- ---------
g G 0
使用RawUI.ReadKey()方法
要在 PowerShell 中启用按任意键继续
:
- 使用
Write-Host
编写用户友好的消息。 - 使用
RawUI.ReadKey()
从键盘设备读取击键。
使用 RawUI.ReadKey() 方法:
Write-Host -NoNewLine 'Press any key to continue...';
$Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');
输出 :
Press any key to continue...
VirtualKeyCode Character ControlKeyState KeyDown
-------------- --------- --------------- -------
104 8 NumLockOn True
在这里,我们使用 Write-Host
cmdlet 在 PowerShell 控制台上显示用户友好的消息,并指导用户应该做什么。
接下来,我们使用 -NoNewLine 参数连接输入对象以形成输出。输出字符串之间不会插入换行符或空格。同样,在最后一个输出字符串之后不会添加新行。
之后,我们使用了 $Host.UI.RawUI.ReadKey()
方法,该方法类似于我们在上一节。它可以接受任何键,甚至是修饰键,其中包括 Ctrl、Shift、Alt 和其他修饰键。
请注意,我们可以在带或不带 ReadKeyOptions 的情况下使用 RawUI.ReadKey()
,其中包括 IncludeKeyDown
、IncludeKeyUp
、NoEcho
和AllowCtrlC
。因此,对于上面的代码示例,我们将 ReadKey()
与 ReadKeyOptions
一起使用,并获取数据作为输出,并以 KeyInfo 对象的形式保存。
如果您对更多技术细节感兴趣,让我告诉您,$Host.UI
是一个 System.Management.Automation.Internal.Host.InternalHostRawUserInterface
对象。相反,$Host
是一个自动变量,其类型为System.Management.Automation.Internal.Host.InternalHost
。因此,我们可以使用$Host.GetType().FullName
命令来了解$Host
变量的类型。
使用cmd /c暂停
命令
使用 cmd /c Pause
命令在 PowerShell 中启用按任意键继续
。
使用 cmd /c 暂停 命令:
cmd /c pause
输出 :
Press any key to Continue
上述命令启用并显示 Press any key to continue...
并等待用户按任意键。一旦用户按下任何键(不包括修饰键),它就会返回。
使用 timeout /t
命令
使用timeout /t
命令启用按任意键继续
并等待指定的秒数或用户在PowerShell中的输入。
使用超时 /t 命令:
timeout /t 10
输出 :
Waiting for 10 seconds, press a key to continue ...
上面的timeout
命令将执行暂停一段时间或无限时间。在这里,我们使用 /t
来指定时间(以秒为单位)。请注意,给定时间必须在 -1
到 99999
范围内。例如,如果没有按下任何键,上述命令将等待 10 秒。
我们可以使用以下命令无限等待,直到用户按下除Fn、Ctrl和Alt等之外的任何键。
使用超时 /t 命令:
timeout /t -1
这就是如何在 PowerShell 中按任意键继续。
猜你还喜欢
- 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