问题标签 [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 回答
971 浏览

powershell - 我正在尝试在远程服务器上执行现有脚本并将输出捕获到本地文件中

我想在多台服务器(近 40-50 台服务器)上并行运行它

$用户名 = "用户"

如果我删除 start-job,此代码工作正常,但一个接一个地执行,这需要很多时间。

我不能使用 PSsession 或调用命令,因为它在我们的环境中受到限制。

此代码永远不会退出。它停在这个位置:

0 投票
1 回答
597 浏览

multithreading - Powershell 中的多线程

我的脚本执行以下操作:

  1. 运行一个抓包进程(使用windump)1小时,数据保存为textFile1
  2. 1小时后将数据转储到数据库中
  3. 删除文本文件
  4. 运行另一个 Windump 并将数据保存到 textfile2(然后重复过程。同时在文本文件之间交替)。

问题是将数据转储到数据库需要很长时间。因此,数据包捕获过程只会在几个小时后再次运行。我无法使多线程工作,因为 Start-Job 不接受作为 ScriptBlock 的函数。这个想法是数据包捕获过程应该连续运行。(也许有转储到免费的数据库,这就是我们在两个文本文件之间交替的原因)

我已经尝试将整个 ParseDumpDB 放入 $Scriptblock 中,但它仍然无法正常工作。

脚本(删除了一些部分):

0 投票
1 回答
4073 浏览

powershell - Start-Job 中的“Start-Process -NoNewWindow”?

我在 Start-Job 中使用 Start-Process 时遇到问题,特别是在使用-NoNewWindow. 例如,这个测试代码:

返回以下错误,显然谷歌没有听说过:

Receive-Job : 后台进程处理数据时出错。报告错误:无法处理节点类型为“文本”的元素。仅支持 Element 和 EndElement 节点类型。

如果我删除-NoNewWindow一切正常。我是在做一些愚蠢的事情,还是没有办法开始工作Start-Process -NoNewWindow?有什么好的选择吗?

0 投票
1 回答
1173 浏览

powershell - 开始作业导致空参数

我正在尝试在 PowerShell v2.0 中执行以下两行代码作为作业,但遇到了麻烦。我认为我的语法是正确的,但我无法让它做我认为应该做的事情,所以我显然做错了什么......

这两行代码在 PowerShell 中工作。但是当我尝试将它放入启动作业命令时:

我收到以下错误:

$report我理解这个错误是说我传递调用表达式的参数为空,但是,我认为通过传递-argumentlist参数,它会通过吗?

0 投票
2 回答
1292 浏览

arrays - PowerShell - 将扩展参数传递给 Start-Job cmdlet

我们正在尝试创建一个包含变量的数组,然后将该数组作为扩展传递给一个脚本,该脚本应由 Start-Job 运行。但实际上它失败了,我们无法找到原因。也许有人可以帮忙!?

它失败了

即使 $config.name 设置正确。

有任何想法吗?

先感谢您!

0 投票
1 回答
2022 浏览

powershell - Scriptblock 可用作 Invoke-Command,但不能用作 Start-Job

我编写了一个 ScriptBlock,它将文件上传到自定义 http 服务器并将响应保存到磁盘。它旨在用于测试所述服务器,除了检查正确的响应之外,我还想并行运行它以加载服务器。

ScriptBlock 中的代码是作为单独的 ps1 脚本构建的并且可以工作。然后我将它移植到一个框架脚本中Start-Job,用于管理工作并最终呈现整体结果。

不幸的是,移植后它不起作用。

症状是使用Start-Job作业永远不会完成。为了进行测试,我已切换到Invoke-Command. 一个简单的Invoke-Command作品,InvokeCommand -AsJob没有。

作品:

不工作:

正在使用的 ScriptBlock 相当长。它从声明参数开始:

再往下使用 HttpWebRequest 和其他一些 .NET 类:

如使用Start-Job或子作业开始时所述,永远Invoke-Command -AsJob保持状态。Running

什么会导致这种行为?可以用什么来调试它?如果有一些错误,我可以强制子作业终止并告诉我它不喜欢什么吗?

我在 Windows XP 上使用 PowerShell 2.0。

在我提出的框架中,我做了Start-Job(目前只是其中之一,但我计划增加这个数字以进行压力测试)。然后我有一个循环等待它们全部终止:

这会产生以下形式的输出:

永远。

一个完整的最小测试用例是:

这对我来说很重要。如果我注释掉创建 WebRequest 对象的行,它就可以工作。

谢谢你。

0 投票
1 回答
1983 浏览

arrays - 如何将powershell命令放入数组中?

我有一个执行大量图像处理的脚本。到目前为止,它是按顺序运行的,只使用一个核心并且需要很长时间。我手头有四个核心。我想同时运行其中四个命令。为了实现这一点,我需要将命令放在一个数组中。这些是原始命令:

到目前为止,我想出了这个:

工作开始但立即退出。我想这与我如何在数组中存储命令有关?

0 投票
1 回答
566 浏览

powershell - 有限的 powershell 启动作业

我很好奇您是否可以回答这个问题或指出我正确的方向。

我编写了一个测试/监控 url 的脚本。我没有发布代码(除非您希望我发布),因为代码中没有错误。它工作得很好。我什至可以将它作为启动作业的一部分运行脚本块。我遇到的问题似乎是我一次不能运行超过 3 个工作......或者他们挂起。我不确定这是为什么。我总共可以运行 15 个限制为 3 个的 url,这很棒。如果我尝试在 15 个 url 上运行它,其中 4 个作为我的运行限制,它们会挂起......我可以一次杀死一个......直到只剩下 3 个并且这些将完成。所以看来我总共只能启动 3 个 powershell 实例,否则它们会挂起。任何人解释这是为什么?我所有的搜索都将我引导到显示如何节流的页面,这不是我的问题。


观察进程,每个进程消耗大约 25MB 的内存并闲置在那里......如果我杀死一个,另外 3 个将开始使用 cpu,进程可能会增加 30MB 的内存并终止完成。系统具有 8GB 内存和四线 I5-2400 CPU @ 3.10GHz。按照要求...


所以我使用了新的 system.net.webclient,我什至尝试用 [System.Collections.Queue] 来做这个......但是所有三种方法都使用 Jobs......所以看起来......我不能运行超过三人同时开始工作。

0 投票
2 回答
2456 浏览

powershell - Powershell 作业内存消耗问题

我已经为此苦苦挣扎了一个星期,并且已经用尽了我在网上找到的所有方法和选项。我希望这里有人能够帮助我解决这个问题。

我正在使用 powershell 启动 8 个作业,每个作业运行 FFmpeg 以将 7 分钟的文件流式传输到远程 RTMP 服务器。这是从磁盘上的文件中提取的,并且每个作业都使用不同的文件。该命令处于 do while 循环中,因此它不断地重新流式传输。

这导致我从中启动作业的 shell 积累了大量内存,消耗了它所能消耗的所有内存。在 24 小时内,它消耗了我服务器 32 GB 中的 30 个。

这是我的启动代码,任何帮助将不胜感激。

}

我尝试接收作业并将其通过管道输出为空,我尝试在启动 do while 循环之前将 $f 设置为 $null,以及我在网上找到的其他一些东西,但无济于事。感谢大家的时间!

0 投票
2 回答
2758 浏览

powershell - 喷溅时使用哈希表作为参数?

我正在尝试使用 Start-Job 启动一个新的 Powershell 脚本。新脚本有几个参数(一些是可选的,一些不是),所以我想制作一个哈希表并将它们分解。然而,其中一个参数本身就是一个哈希表。我正在尝试这样开始工作:

于是我在新工作中得到这个错误:

看起来它正在将我想要作为哈希表传递的值作为字符串处理。对于我的生活,我无法弄清楚如何解决这个问题。任何人都可以帮忙吗?