首页 > 解决方案 > 在 Job 被解雇后执行额外的 cmdlet

问题描述

假设我有一个简单的 Job,开始时是这样的:

$job = Start-Job -ArgumentList 1, 2 -ScriptBlock {
        $var1 = $args[0]
        $var2 = $args[1]

        $var3 = $var1 + $var2

        Write-Host $var3
}

现在假设我想继续执行 $job 会话并引入新参数,然后在 $job 中继续执行。

据我了解,这不是乔布斯在 Powershell 中的工作方式。一旦作业内部的命令被执行,作业就被认为已经完成,不能再被回收。如果我的理解是正确的,是否有任何其他方法可以实现在您的 powershell 会话中有效地拥有后台任务的效果,您可以继续注入新的命令/变量,而无需创建新的作业/会话/进程?为清楚起见,这是本地的(在同一台机器上)。

标签: powershellwindows-terminal

解决方案


我认为你会更好地研究 PowerShell 运行空间,而不是可以相互通信,因为它们是相同进程的线程。

Start-Job实际上在单独的隔离进程中启动了一个新的 PowerShell 会话。

请参阅MS Docs - Start-Job -RunAs32MS Scripting - 开始使用 PowerShell 运行空间


推荐阅读