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

powershell - 作业中的Powershell引用变量参数

我收到此错误:

我似乎无法让 tfsbuild 接受启动作业中的参数......如果我只是在没有工作的情况下执行 tfsbuild 部分,它实际上运行良好。

任何想法我应该如何传递这个价值?发送

0 投票
0 回答
151 浏览

powershell - 开始作业时超时并将变量传递给参数列表

我正在使用以下脚本尝试 ping 存储在 CSV 中的计算机列表。期望的结果是我将能够验证超时条件。

此脚本导致错误:

您必须在“-”运算符的右侧提供一个值表达式。”

如果我将参数列表移至此处:

我收到一个错误

无法验证参数“ComputerName”上的参数。参数为 null 或空。

我看过关于将变量传递给脚本块的文章和问题,但它们是 forInvoke-Command和 not Start-Job,我还没有让它在翻译中工作。我的印象是,如果它有效,我将看不到我期望的输出,即Write-Host.

0 投票
3 回答
11289 浏览

powershell - 如何从列表中异步调用多个 URL

我有几十万个 URL 需要调用。这些是对应用程序服务器的调用,应用程序服务器将处理它们并将状态代码写入表。我不需要等待响应(成功/失败),只需要服务器收到请求。我还希望能够指定一次可以运行多少并发作业,因为我还没有计算出tomcat可以处理多少并发请求。

到目前为止,这是我所得到的,基本上是从其他人尝试做类似的事情中得到的,而不是通过 url 调用。文本文件在其自己的行中包含每个 url。网址如下所示:

和代码:

我遇到的问题是每个“工作”都会出现 2 个错误,我不知道为什么。当我转储 url 数组 $content 时,它看起来很好,当我一一运行我的 Invoke-WebRequest 时,它们可以正常工作。

任何帮助或替代实现将不胜感激。我愿意不使用 powershell,但我仅限于 Windows 7 桌面或 Windows 2008 R2 服务器,我可能会使用 url 中的 localhost 在服务器本身上运行最终脚本,以减少网络延迟。

0 投票
1 回答
279 浏览

powershell - 使用 Get-ADPrincipalGroupMembership 作为工作

我想获得 AD Group Membership 作为一份工作。只是使用

很好地返回了 AD 组的列表。但是,当我尝试将其作为工作时:

我收到一个错误:

无法验证参数“身份”上的参数。参数为 null 或空。提供一个不为 null 或空的参数,然后重试该命令。+ CategoryInfo : InvalidData: (:) [Get-ADPrincipalGroupMembership], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.Get ADPrincipalGroupMembership + PSComputerName : localhost 我做错了什么?

0 投票
1 回答
1634 浏览

powershell - 获取子作业的子作业输出

如果你开始一个工作(A),而这个工作又开始另一个工作(B),是否可以通过使用这样的东西来获取(B)的输出?

我希望我可以递归地深入研究对象,但奇怪(Get-Job -Name A).ChildJobs[0]的是总是有一个空的 ChildJobs 集合。这可能只是我对如何创造就业机会的误解。

一种解决方法是等到作业 B 完成,获取其输出,将其存储在变量中,然后对变量执行写入输出,以便父脚本可以处理它。它有效,但这意味着我必须等到作业 B 完成,这可能需要 10-40 分钟。

我也许可以(在作业 B 中)在输出出现在平面文件或 SQLite 数据库时立即将其写入,但我希望我可以从脚本的最顶层范围中获取它。

这是一个例子

0 投票
1 回答
885 浏览

start-job - Start-Job 无法识别加载的模块

我的问题涉及 PowerCLI 的特定模块,但我希望它涉及到 PS Jobs 的更普遍的问题。我正在加载作业脚本块中的命令所需的模块,但无法识别这些命令,就好像未加载该模块一样。

我在start-job之前加载了VMware powerCLI modele,如下,但是scriptblock中的代码无法识别模块已加载,因此无法识别get-vm命令。

导入模块 VMWare.VimAutomation.core Connect-VIServer -server VIServer01 $NewJob = start-job -scriptblock {Get-VM -server VIServer01 | 选择名称,@{N="Cluster";E={Get-Cluster -VM $ }},@{N="ESXHost";E={Get-VMHost -VM $ }}}

我熟悉将参数从脚本传递到作业脚本块的需要和方法,但是如何让它识别模块已加载?另外,如果我从脚本块中加载模块,我会遇到堆栈溢出失败,我猜是由于模块的重复循环加载。

0 投票
1 回答
78 浏览

powershell - 从 foreach 调用脚本

我需要一些帮助,或者就我正在尝试做的事情提出更好的建议。

我试图复制一些东西,所以我有

这不会调用我的脚本块。

如何调用 $test1 块?

提前致谢。

0 投票
1 回答
306 浏览

powershell - ScriptBlock 中的参数未正确扩展

从此修改编辑:为了清楚起见,删除了不必要的代码。

MyCommandlet期望在使用之前检查一个变量(此处-Lhost $temp)(它不应为 null 或空)。

尝试运行上述脚本时,我收到以下错误消息。

Invoke-Shellcode:无法验证参数“Lhost”上的参数。参数为 null 或空。提供一个不为 null 或空的参数,然后重试该命令。


编辑Invoke-Shellcode是原始 Commandlet,我将其引用为MyCommandlet. 出于安全原因,我不想包含完整的代码(以防人们自己运行脚本)。有关更多详细信息,请参阅此处的代码 https://github.com/PowerShellMafia/PowerSploit/blob/master/CodeExecution/Invoke--Shellcode.ps1

原始的 ScriptBlock 类似于(参见 $temp 变量)


本质上,该变量没有MyCommandlet正确传递给我,而Write-Host $temp在相同的上下文中返回一个非空值(这是正确的)。我知道变量不会传递给其他 ScriptBlock,特别是如果它在新作业中运行,但是因为Write-Host能够在作业中正确读取值,所以我一定错过了其他一些东西。

正如一些帖子所建议的,我尝试了以下替代方案:

  • ...} -ArgumentList $temp(在 ScriptBlock 之后) http://powershell.org/wp/forums/topic/passing-parameter-to-start-job/
  • {param($temp) ...}(在 ScriptBlock 的开头)
  • 直接使用Start-Job -ScriptBlock {...},而不是 ScriptBlock 的变量。 [scriptblock]::Create(...)声明 ScriptBlock
  • 使用Invoke-Command, 而不是Start-Job但不仅它也不起作用(尽管工作方式略有不同),Start-Job如果可能的话,我想坚持下去。
  • 我想避免使用 Powershell V3.0$using:variable功能。另外,它在我尝试的配置中不起作用。

这些都不适合我。

0 投票
2 回答
1027 浏览

windows - Powershell Retrieve-Job 给出“无法索引到空数组错误”

我正在尝试使用以下脚本测试是否连接了两台 PC

当我尝试为任何一个执行 Receive-Job 时,我得到“无法索引到空数组”。我究竟做错了什么?

0 投票
1 回答
2597 浏览

powershell - 包括自定义 cmdlet 的 Start-Job 以奇怪的错误终止

我开发了一些自定义cmdlet,它们用于向 SharePoint 系统执行不同的导入任务。目前,所有这些 cmdlet 都在单个 PowerShell 脚本中以串行方式运行。我想更改此设置,以便每个 cmdlet 在单独的任务(作业)中执行。

主脚本启动一项新作业,该作业与Start-Job包含对 cmdlet 的调用的单独脚本相关。该脚本启动并执行 cmdlet。我还调试了执行的 cmdlet 的代码。到目前为止一切顺利。

但大约 15-20 秒后,作业就会终止,并显示以下错误消息:

我找不到有关如何处理此类错误的任何信息。我只是不知道这里有什么问题。

我是否必须向我的自定义 cmdlet 添加更多功能才能在作业中处理它们?

这是脚本。

主要的:

进口商品: