问题标签 [start-job]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3948 浏览

powershell - PSSessionStateBroken 与计划任务中的 start-job -credential

下面的行在 Powershell 提示符下工作正常,但在计划任务中失败。

在 c:\temp\err.txt 中,Windows 2008R2 计划任务留下了一个面包屑:

...这将我们带到了这个 Microsoft 错误报告。该报告提到了使用 localhost 环回远程处理的解决方法,这听起来有点脏。我应该去那里吗?

有更好的解决方案吗?也许使用 *session cmdlet 或调用命令之一?计划任务的Start in值已设置,但后台进程可能以某种不好的方式使用了一些变量,像这样

–version 2使用或使用-command "& {bigKlugeyScriptblock}"语法调用 powershell.exe 还没有运气。

编辑:我试图避免创建一个新的域帐户来运行该任务。该任务不能domainUser从 from运行$cred,因为该帐户不应该具有 localhost 的权限。

0 投票
3 回答
69959 浏览

powershell - 如何从 Start-Job 调用脚本中的 powershell 函数?

我看到了这个问题这个问题,但找不到我的问题的解决方案。

所以情况如下:我在脚本(.ps1)文件中有两个函数 DoWork 和 DisplayMessage。这是代码:

我正在创建 3 个后台作业(使用具有 3 个元素的 $array)并使用事件将消息从后台作业传递到主机。我希望powershell主机显示“处理开始”和“处理结束”1次,“开始工作”和“结束工作”各3次。但相反,我没有在控制台中显示“开始工作”/“结束工作”。

事件也被视为 powershell 中的作业,因此当我执行 Get-Job 时,我可以看到与事件作业相关的以下错误:

{术语“DisplayMessage”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。}

我的问题:我们如何重用(或引用)在我调用 Start-Job 的同一脚本中定义的函数(在我的情况下为 DisplayMessage)?是否可以?我知道我们可以使用 -InitializationScript 将函数/模块传递给 Start-Job,但我不想编写两次 DisplayMessage 函数,一个在脚本中,另一个在 InitializationScript 中。

0 投票
5 回答
51102 浏览

powershell - Powershell:并行运行多个作业并查看后台作业的流式传输结果

概述

希望调用一个接受参数的 Powershell 脚本,在后台运行每个作业,并向我显示详细的输出。

我遇到的问题

该脚本似乎正在运行,但我想通过在后台作业运行时流式传输结果来确定这一点。

代码

我目前看到的:

我想看到的:

我希望能够看到输出或将其存储在某处,以便我可以回顾以确保脚本运行并查看哪些服务器重新启动等。

结论:

过去,我运行脚本,它一次更新一个服务器,并给了我想要的输出,但是当我开始做更多服务器时 - 这个任务花费了太长时间,这就是我尝试使用后台的原因带有“开始工作”的工作。

谁能帮我解决这个问题,好吗?

0 投票
3 回答
23035 浏览

powershell - start-job 并行运行命令并在结果到达时输出

我试图在服务器列表上获取特定的 KBXXXXXX 存在,但是一旦我的脚本在一台服务器上,它需要时间并返回结果并返回然后移动到下一个。这个脚本对我来说非常好。我希望我的脚本作为作业和其他进程启动并获取修补程序,只是为了收集结果并显示它们。

它的目标是使列表执行得更快而不是串行运行。

0 投票
0 回答
1396 浏览

powershell - Powershell将参数传递给后台作业

我有一个带有以下参数的脚本:

我想在后台运行这个脚本,但我一直在努力获取参数。这个脚本是一个模块。我可以从命令行成功运行它

但这是我的脚本中用于启动工作的实际代码:

未注释的 Start-Job 只是运行一个转储 $args 的测试脚本。

结果是:

如何格式化我的 Start-Job 以成功传递参数?我用 -FilePath 尝试了各种格式的 Start-Job,列出参数而不是传递对象等。

它们最终都被阻止等待用户输入提示参数。

0 投票
1 回答
3714 浏览

powershell - Powershell Start-Job 未执行脚本块

标题说明了一切,我有一个带有脚本块的 Start-Job,它不执行命令,而是输出有关作业的信息。

执行的顺序如下

以及带有 start-job 的模块

我没有收到任何错误,而是没有执行命令,而是为两个启动作业编写了以下命令

这可能与我编写脚本块的方式有关,但我无法弄清楚与我见过的所有其他示例有什么不同。

是否可以使用 read-host 命令启动作业等待用户输入?

编辑:我发现了为什么作业没有执行的问题。参数未正确传递。这是我找到解决方案的链接。

将参数传递给 start-job

最后一个示例有效,即使对于单个参数,您也必须这样做。

我还有一个问题。我上面写的东西仍然会输出到控制台。有什么方法可以抑制 start-job cmdlet 的不需要的输出?

0 投票
4 回答
15345 浏览

powershell - 在后台作业中调用命令

我有一个 powershell 2.0 脚本,它应该在多台服务器上运行命令并处理输出。我想在后台作业中为每个服务器运行命令和处理。

该命令可以正常工作,并在半秒或更短的时间内终止:

但是当我在后台作业中运行它时,该作业不会终止:

有人知道问题可能是什么吗?

0 投票
4 回答
1440 浏览

powershell - 使用 powershell 对象执行脚本

使用的 Powershell 版本:3.0

大家好,

我正在尝试创建一个新的 Powershell 管道并在其中执行一个脚本,然后将它产生的输出获取到一个输出变量中,但是我无法从对象内部(从执行的脚本)中获得任何输出。这样做的重点是我不必管理 $Error 对象,我打算将其用于错误检测。下面是一个示例:

我应该提到我正在尝试使用以下 3 种方法在执行的脚本中产生输出:

  • 写主机
  • 写输出
  • Write-Verbose(使用 $ps.Streams.Verbose 尝试获取输出,但没有)

非常感谢您提供的任何建议或提示!

0 投票
2 回答
1633 浏览

powershell - 后台作业提前结束

我对使用后台进程有一个理解问题。

我必须将 Linux 上的处理逻辑转换为 Windows。我有一个脚本,在它的处理中,在其他脚本中启动,另一个脚本在后台,并追求它的处理。抛出(启动)处理背景的脚本不必关心这个结果,因此即使背景中的处理仍然执行,也必须结束。

我在 Powershell 中试验的是当我的第一个脚本结束时,看起来在后台抛出的脚本的处理中断了。

这是我在环境中进行的测试示例(PowerShell 2.0 版)

这是我的第一个脚本的简单代码script_1.ps1

我的第二个脚本script_2.ps1

这是我提交时发生的情况:

结果显示,当第一个脚本终止时(3 秒后),第二个脚本也停止了,因为我们看到只创建了前 2 个日志文件。

我坚持认为这就像在 Linux ( &) 上一样,后台工作无论如何都会继续进行。它是使用 PowerShell 的方式还是我做错了什么?

0 投票
4 回答
21925 浏览

powershell - Powershell - 如何为 Start-Job 预先评估脚本块中的变量

我想在 Powershell 中使用后台作业。

如何在 ScriptBlock 定义时评估变量?

我打印出 $v1 和 $v2 的空值。我怎样才能让它们在(传递给)脚本块中进行评估,然后再传递给后台作业?