可能有不同的情况需要在PowerShell中暂停。我们可以暂停Powershell以等待用户输入、减慢执行速度、等待另一个进程或事件等。Powershell提供了不同的机制来暂停执行。
PowerShell暂停方法
可以使用以下方法在PowerShell中暂停命令。即使其中一些不是本地PowerShell命令或方法,也可以在PowerShell中轻松使用。例如,MS-DOS pause和timeout命令可用于暂停PowerShell终端。
- 启动休眠命令
- 线程休眠
- 读取主机命令
- 控制台读取键
- RawUI读取键
- MS-DOS暂停命令
- MS-DOS超时命令
使用Start Sleep命令暂停PowerShell
PowerShell中最常用的暂停命令是 开始睡眠 命令或cmdlet。另外,Start Sleep命令是PowerShell提供的官方和本机命令。Start Sleep命令具有以下语法,其中 -秒 参数用于指定暂停秒数和 -毫秒 参数用于指定暂停毫秒数。
在下面的示例中,我们将暂停时间设置为3秒。
Start-Sleep -Seconds 3Start-Sleep -Seconds 3Start-Sleep -Seconds 3
我们也可以只使用毫秒来指定暂停时间。
Start-Sleep -Milliseconds 300Start-Sleep -Milliseconds 300Start-Sleep -Milliseconds 300
1秒等于1000毫秒。因此,在下面的示例中,我们将等待时间设置为3000毫秒,这等于3秒。
Start-Sleep -Milliseconds 3000Start-Sleep -Milliseconds 3000Start-Sleep -Milliseconds 3000
可以同时指定-Seconds和-millishes参数。
Start-Sleep -Seconds 3 -Milliseconds 500Start-Sleep -Seconds 3 -Milliseconds 500Start-Sleep -Seconds 3 -Milliseconds 500
另外,seconds参数可以通过使用双精度或浮点值来指定秒和毫秒。在下面的示例中,我们将暂停3.5秒,这相当于3秒500毫秒。
Start-Sleep -Seconds 3.5Start-Sleep -Seconds 3.5Start-Sleep -Seconds 3.5
使用线程睡眠暂停PowerShell
PowerShell是用.NET框架和.NET开发的 [系统线程线程] 类可用于暂停线程本身。这个 睡眠() 通过调用 [System.Threading.Thread]:睡眠() . 对于Sleep()方法,暂停时间指定为毫秒。在下面的示例中,我们将PowerShell暂停2秒100毫秒,这也等于2300毫秒。
[System.Threading.Thread].Sleep(2100)[System.Threading.Thread].Sleep(2100)[System.Threading.Thread].Sleep(2100)
或者,可以使用TimeSpan类型指定暂停时间。TimeSpan对象是通过提供天、小时、分钟、秒和毫秒值来创建的。在下面的示例中,我们将暂停2秒100毫秒。
[System.Threading.Thread].Sleep([TimeSpan]::New(0, 0, 0, 2, 100))[System.Threading.Thread].Sleep([TimeSpan]::New(0, 0, 0, 2, 100))[System.Threading.Thread].Sleep([TimeSpan]::New(0, 0, 0, 2, 100))
使用Read Host命令暂停PowerShell
Read Host命令用于从PowerShell命令行界面读取一些输入。由于Read Host命令不是为暂停而设计和创建的,所以shell提供了非常基本的用法,即在用户输入一些数据或按键之前暂停PowerShell。一般情况下,一些信息或提示被打印给信息用户。
Read-Host -Prompt "Please enter some value or press any key"Read-Host -Prompt "Please enter some value or press any key"Read-Host -Prompt "Please enter some value or press any key"
使用控制台ReadKey暂停PowerShell
Console ReadKey是另一种暂停PowerShell的方法。Console ReadKey提供了与Read Host命令类似的用法。PowerShell已暂停,以便以交互方式获取一些输入。控制台ReadKey的执行方式类似于“ [控制台]::ReadKey ()”方法。
[Console]::ReadKey()[Console]::ReadKey()[Console]::ReadKey()
使用RawUI ReadKey暂停PowerShell
RawUI ReadKey与控制台非常相似 读取键 方法,在该方法中可以定义按下的键,直到按下某个键,PowerShell才会等待。
$host.UI.RawUI.ReadKey('IncludeKeyUp')$host.UI.RawUI.ReadKey('IncludeKeyUp')$host.UI.RawUI.ReadKey('IncludeKeyUp')
使用MS-DOS Pause命令暂停PowerShell
PowerShell的MS-DOS前身。PowerShell被创建为与MS-DOS和MS-DOS的 暂停 ‘命令可用于暂停PowerShell。pause命令的用法如下。
pausepausepause
发出pause命令时,PowerShell屏幕上会显示以下行,其中resume需要按 输入 钥匙。
Press Enter to continue...
或者,我们可以通过提供MS-DOS或cmd作为执行环境来执行pause命令。
cmd /c 'pause'cmd /c 'pause'cmd /c 'pause'
使用MS-DOS超时命令暂停PowerShell
超时命令是用于暂停MS-DOS的本机命令。超时命令也可用于暂停PowerShell。timeout命令还可以通过使用 /t型 选项。在下面的示例中,我们将等待PowerShell 2秒钟。
timeout /t 2timeout /t 2timeout /t 2
我们还可以提供 -1 作为等待时间,它将无限期地等待。
timeout /t -1timeout /t -1timeout /t -1