powershell - 在 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 会话中有效地拥有后台任务的效果,您可以继续注入新的命令/变量,而无需创建新的作业/会话/进程?为清楚起见,这是本地的(在同一台机器上)。
解决方案
我认为你会更好地研究 PowerShell 运行空间,而不是可以相互通信,因为它们是相同进程的线程。
Start-Job
实际上在单独的隔离进程中启动了一个新的 PowerShell 会话。
请参阅MS Docs - Start-Job -RunAs32和MS Scripting - 开始使用 PowerShell 运行空间
推荐阅读
- java - 我怎么知道 CamelContext 何时启动?
- google-chrome - Chromium 不尊重 --disable-http2
- java - 为什么选择 Reactor Mono
被识别为空单声道? - php - ftp_login 在第二次登录尝试时失败?
- mysql - 由于发生redis错误,用户无法登录laravel网站。重新启动redis服务时,不会出现此错误
- vb.net - 是否有跳过 for 循环中步骤的功能?
- c# - Process.Threads 不包含进程产生的线程的完整列表
- mstest - specflow.exe 生成 html 报告的替代方法是什么
- android - 如何将所选项目保存在日历中
- php - 在 Laravel 中限制用户单次和多次登录