迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

在 PowerShell 中等待每个命令完成

作者:迹忆客 最近更新:2024/03/03 浏览次数:

通常,Windows PowerShell 在启动以下命令之前会等待内部命令。

此规则的一个例外是基于外部 Windows 子系统的 EXE。此外,Windows PowerShell 在运行可执行程序时不会等待命令完成。

本文将向你展示如何强制 Windows PowerShell 环境等待带有可执行文件的命令完成,然后再转到以下命令。


在 PowerShell 中使用 Out 命令等待每个命令完成

如前所述,运行可执行文件不会等待命令完成,而是直接转到以下命令。我们可能需要避免这种情况,特别是如果我们创建一个应该顺序运行应用程序的脚本。

一个绝妙的技巧是使用 Out 命令之一,例如 Out-Null。运行应用程序时,通过管道传送 Out-Null cmdlet 将诱使 Windows PowerShell 在正在运行的应用程序之上运行底层 cmdlet。

请记住,cmdlet Out-Null 不会在控制台中显示任何内容,因此它看起来像是一个标准运行的应用程序。唯一的区别是它等待整个命令行执行。

示例代码:

Notepad.exe | Out-Null

我们可以使用的其他 Out 命令示例如下:

  • Out-Default - 将输出发送到默认格式环境和默认输出 cmdlet。
  • Out-File - 将输出发送到文件。
  • Out-GridView - 将输出发送到单独窗口中的交互式表格。
  • Out-Host - 将输出发送到命令行。
  • Out-Printer - 将输出发送到打印机。
  • Out-String - 将对象作为一系列字符串发送到主机。

在 PowerShell 中使用 Start-Process Cmdlet 等待每个命令完成

使 Windows PowerShell 等待命令行完成的另一种方法是 Start-Process cmdlet。

例如,我们可以使用 Start-Process cmdlet 的 -Wait 参数,Windows PowerShell 将等待进程完成,然后再执行以下命令行。

Start-Process notepad.exe -NoNewWindow -Wait

使用 PowerShell 社区扩展版本,首先创建一个新对象。一旦创建了对象,就会调用 WaitForExit() 函数。

$proc = Start-Process notepad.exe -NoNewWindow -PassThru
$proc.WaitForExit()

在 PowerShell 中使用后台作业等待每个命令完成

使 Windows PowerShell 等待命令行完成的另一种方法是使用后台作业。

后台作业是在本地机器的单独进程中运行的一个命令或一组命令。后台作业的示例语法如下所示。

$job = Start-Job { notepad.exe }
Wait-Job $job
Receive-Job $job

调用 Wait-Job cmdlet 将使进程等待,直到在命令行中调用 Receive-Job


在 PowerShell 中使用 Wait-Process Cmdlet 等待每个命令完成

使 Windows PowerShell 等待命令行完成的另一种方法是 Wait-Process cmdlet。

就像我们的第一个示例一样,我们可以将其通过管道传输到我们的可执行文件中并等待命令行完成。但是,使用此 cmdlet 仅适用于 Windows PowerShell 版本 5.1 及更低版本,不适用于最新的 PowerShell (Core) 7。

Notepad.exe | Wait-Process

在 PowerShell 中使用 [Diagnostics.Process] 类等待每个命令完成

如果你的系统中安装了 .NET 库,你可以使用 [Diagnostics.Process] 类等待进程完成,然后再转到以下命令行。

但是,我们不建议使用它,因为 Windows PowerShell 中提供了其他更简单的 cmdlet,我们可以充分利用它们。如果 PowerShell 命令不可用,请仅使用 .NET 库。

[Diagnostics.Process]::Start('notepad.exe').WaitForExit()

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Windows PowerShell 中获取命令行参数

发布时间:2024/03/04 浏览次数:358 分类:编程语言

本文将解释我们如何使用 PowerShell 的参数函数处理命令行参数,参数如何工作,我们如何使用 PowerShell 参数将值传递给参数,以及定义参数的基本方法是什么。

Windows PowerShell 中的 Base64 编码

发布时间:2024/03/04 浏览次数:332 分类:编程语言

本文将展示如何编码和解码 base64 字符串。Windows PowerShell 当前版本没有本机命令,因此我们将向你展示如何执行此操作的替代方法。

在 Windows PowerShell 中写入输出

发布时间:2024/03/04 浏览次数:259 分类:编程语言

本文将向你展示如何在 Windows PowerShell 中编写或打印输出。本文还将区分多个 write cmdlet 并解释它们的意义。

在 PowerShell 中注释代码

发布时间:2024/03/04 浏览次数:363 分类:编程语言

本文将展示在 Windows PowerShell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便