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

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

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

PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作


[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

PowerShell暂停简介

PowerShell Pause cmdlet 用于暂停脚本的执行一段时间,等待用户输入然后继续执行,减慢执行速度,或者等待另一个进程或作业先完成并恢复执行。通过上述所有方法,Pause cmdlet 以交互方式或非交互方式停止执行。

句法

使用多个 cmdlet 来暂停 PowerShell 执行。其关键字和语法如下。

a.暂停

无限期暂停脚本执行直到按下 Enter 按钮的简单命令。

b.开始-睡眠

将脚本执行暂停一段时间。我们可以以秒或毫秒为单位指定时间。此 cmdlet 附带 Microsoft.PowerShell.Utility 模块。

c.读取主机

Read-Host 命令读取用户从控制台输入的输入。该命令以交互方式运行,并且每次都需要用户输入以使脚本进一步执行。 read-Host cmdlet 是 Microsoft.PowerShell.Utility 模块的一部分。

d.Wait-Job

Wait-Job cmdlet 有助于保持脚本的执行。通常,当我们不希望第二个命令运行,除非前一个命令完全执行时,我们使用此命令。 命令被包装在该块内以完成该块的执行。此命令是 Microsoft.PowerShell.Core 模块的一部分。

e.设置 PSBreakPoint

Set-PSBreakPoint 是一个调试程序,但我们可以使用它来暂停脚本执行,直到按下“C”关键字或按下编辑器的“继续”按钮。我们可以设置行断点、脚本断点和变量断点,脚本在这些断点处停止执行。

f.超时

还可以在 PowerShell 中使用 Cmdlet 实用程序 Timeout.exe 将脚本执行暂停特定的秒数。

g。 System.Threading.Thread.Sleep

我们可以使用 System.Threading.Thread 类及其方法 Sleep() 来停止脚本或 PowerShell 执行。我们可以在方法内部以 Int32 格式指定毫秒。

h. [控制台]::ReadKey()

在此方法中,PowerShell 等待用户输入任何键。不幸的是,此方法只能直接与控制台一起使用。您不能在脚本内使用此方法。

PAUSE cmdlet 在 PowerShell 中如何工作?

尽管 Pause cmdlet 有多种语法,但它们的主要目的是在特定时间或无限期(如果未提供输入)保持执行。使用这些 cmdlet 后,调试器会将脚本置于当前状态并等待输入;一旦提供了输入,调试器就会从它离开的地方开始执行。

PowerShell 暂停的示例

这是下面提到的例子

示例 #1 - 暂停 cmdlet 示例

在下面的示例中,脚本将在运行第一行后等待用户输入,并在按下 Enter 后继续执行,如下输出表所示。这是交互式的,有人需要时必须按 Enter 键。

如果脚本计划在后台运行,那么我们需要避免使用 Pause cmdlet。

Write-Output "Script will delete Temp files"
pause
Write-Output "Starting delete process"

输出:

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

一旦按下输入键,

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

示例 #2 - Start-Sleep Cmdlet 示例

Start-Sleep cmdlet 会在指定时间内暂停脚本的执行。您可以以秒或毫秒为单位指定时间。

该cmdlet被设计为非交互运行,因此如果脚本计划在后台运行,它就适合它。

$i=0
while($i -lt 5){
Write-Output "i = $i ....Next step is after 2 seconds"
Start-Sleep -seconds 2
$i++
}

输出:

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

在上面的示例中,我们指定了以秒为单位的 Start-Sleep。您还可以使用 -Milliseconds 参数来使用毫秒。

示例 #3 - Read-Host cmdlet 示例

虽然 Read-Host cmdlet 是为了获取用户的输入并稍后在脚本中使用,但它也被认为是用于保持 PowerShell 脚本的执行。在下面的示例中,我们将询问用户对输入的选择以及执行等待输入然后继续的位置。

Write-Output "Printing different names"
$name = Read-Host "Enter Name to print "
Write-Output "Name = $name"

输出:

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

输入值后。

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

示例 #4 - 超时

Timeout.exe 是一个 cmd 命令,但我们可以在 PowerShell 中利用 cmd 命令。 我们需要以秒为单位指定时间。

Write-Output "Running script"
Timeout /T 10
Write-Output "This line will run after 10 seconds"

输出:

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

当您按下时,任何键都会在超时期间继续执行,无需任何等待。如果您不希望超时中断,则可以使用开关 /NOBREAK。

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

停止超时的唯一方法是按 CTRL + C。

示例 #5 - Set-PSBreakPoint 示例

当您在行、变量或脚本调试器设置断点时,会无限期地暂停执行,我们需要按“C”按钮才能继续执行。例如,

$i=0
while($i -lt 5){
$i
$i++
}

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

在上面的示例中,我们在第 3 行设置了断点。

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

当我们按下时,C继续执行。我们还可以在变量或脚本上设置断点,但主要目的是暂停脚本的执行。

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

示例 #6 - System.Threading.Thread.Sleep

我们可以使用 System.Threading.Thread .NET 类方法 Sleep() 来暂停脚本的执行。 sleep() 方法接受毫秒。

Write-Output "Starting execution"
Write-Output "Halting execution for 5 seconds"
[System.Threading.Thread]::Sleep(5000)
Write-Output "Execution Resumes"

输出:

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

示例 #7 - ReadKey() 示例

在此方法中,我们可以使用PowerShell控制台的ReadKey()方法。此方法仅适用于控制台,并等待按下任意键。当我们从任何控制台(ISE 或任何控制台)执行此方法时,控制台会冻结。

Write-Output "Starting execution"
Write-Output "Halting execution until key pressed"
[Console]::ReadKey()
Write-Output "Execution Resumes"

输出:

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

一旦我们按下任意键,

[玩转系统] PowerShell 暂停 |了解 PAUSE cmdlet 在 PowerShell 中如何工作

结论

暂停命令对于调试、停止线程执行或输入非常有用,但要使用哪个 cmdlet 取决于您。我们还可以将 Wait-Job 视为暂停 cmdlet,但实际上,它不会停止执行,而是在后台运行作业,当第一个命令完成时,它会开始执行下一个命令。

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

取消回复欢迎 发表评论:

关灯