如何防止在 Windows Powershell 上运行命令时锁定?我知道在 Linux 上,您可以在命令末尾添加 &,这样您就可以继续使用终端而无需关闭该进程。Windows Powershell 有类似的功能吗?
答案1
如何防止运行命令时 Windows Powershell 锁定?
使用Start-Job
cmdlet 在后台启动作业。
&
这相当于在 Unix/Linux 中在命令末尾使用的 Powershell 。
PowerShell 后台作业
创建 PowerShell 后台作业的最简单方法是使用 cmdlet
Start-Job
。您可以使用 cmdlet 指定脚本块。例如,以下命令运行一个简单的脚本块,以后台作业的形式获取 1 到 50 之间的数字:Start-Job {1..50}
您可以使用以下单行命令将参数传递给脚本块:
Start-Job {Param($log,$newest) Get-EventLog $log Newest $newest} -ArgumentList "system",25
或者您可以运行脚本:
Start-Job -FilePath C:\scripts\Send-UptimeMail.ps1 -ArgumentList (Get-Credential [email protected])
您可以在下面看到这三个命令的结果。我在 PowerShell 3.0 中运行了这些命令。但是,它们也可以在 PowerShell 2.0 中运行,尽管您看不到 PSJobTypeName 列。
输出的
Start-Job
是作业队列对象。您可以使用-Job
cmdlet 来管理作业及其结果。您可以通过 ID 引用作业。在上图中,请注意作业 ID 如何从 1 跳到 3 再跳到 5。
上面的链接包含了更多细节,涵盖了以下主题:
使用
Get-WMIObject
Cmdlet 创建后台作业使用
Invoke-Command
Cmdlet 创建后台作业管理后台作业
获取作业结果
停止并等待作业
进一步阅读
答案2
作为 Jobs 的替代方案,你可以使用运行空间:它们在后台运行命令时提供更高的性能和更少的开销。
实现方式: