问题标签 [powershell-jobs]

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 投票
2 回答
2073 浏览

powershell - 如何从 Powershell 作业捕获 .NET 跟踪输出?

我在 Powershell 中使用 .NET 组件,它使用 .NETTrace.TraceWarningTrace.TraceInformation

当我运行我的 Powershell 脚本时,我想将这些跟踪输出到控制台。

这在我在当前会话中使用组件时有效。例如(模拟跟踪的效果)给我 'Hello' 输出到控制台:

但是,如果我在 Powershell 作业中做同样的事情,我不会得到任何输出,即使 ConsoleTraceListener 应该写入 STDOUT,而我又希望被作业捕获。(有趣Console.WriteLine的是,也不能从工作中工作——但Write-Host确实如此)。

我开始我的工作是这样的:

0 投票
1 回答
533 浏览

powershell - 从另一个工作流调用工作流作为 PowerShell 中的作业

我必须从另一个工作流异步调用一个长时间运行的工作流。有没有办法在powershell中做到这一点?

现在当我打电话

我需要调用工作流立即返回打印“调用的工作流”,以便我可以在被调用的工作流在后台运行时开始继续我的工作。

0 投票
0 回答
625 浏览

powershell - 无法使用备用凭据通过 PowerShell 插件在 Jenkins 上运行 Start-Job 作业

系统:Windows Server 2012 R2 | PowerShell v4 | 詹金斯 v1.607 | 64 位 Java 版本 8u60

无论出于何种原因,我都能够登录到运行 Jenkins 的 Windows 服务器,并毫无问题地执行以下代码:

在尝试在 Jenkins 作业中执行相同的代码时,使用 PowerShell 插件,使用我在 $Creds 中使用的相同用户凭据,它会在没有任何有用信息的情况下失败。凭证已通过验证。这是我得到的错误:

我使用Resolve-Error 函数(如此处所示)来尝试获取更多信息。这是输出:

仍然没有有用的信息。我不知道可能是什么问题,也不知道如何进行。

0 投票
2 回答
3558 浏览

powershell - 如何判断 Start-Job 命令启动了哪些进程?

Start-Job我有(继承)一个 PowerShell 脚本,该脚本通过使用cmdlet 和-FilePath参数调用其他 PowerShell 脚本来调用它们。例如,我有一个什么都不做的脚本:

我可以通过工作调用:

是否有任何简单可靠的方法来找出与这项工作相关的进程(我相信这将是一个额外的powershell.exe)?显然,这很容易通过一项工作进行测试,但在服务器上我可能会同时运行许多这些工作。

为什么我想做/知道这个?

我是一个新角色,在一个服务器上工作,该服务器有多个运行各种脚本的计划任务。其中一些调用我的前任选择使用 Start-Job 调用的其他脚本,可能是因为它们可以长时间运行(多个小时)并希望它们并行工作。有时它们似乎被卡住了,我想杀死它们,但不想冒险阻止仍然健康的东西。

沿着这条路走下去,可能对如何匹配作业和流程更加好奇,因为我很可能会在不久的将来开始重写其中的一些脚本。

0 投票
1 回答
498 浏览

powershell - 没有从接收作业中获得输出

运行此脚本时,变量 $var 为空:

如何从接收作业中获取输出?

0 投票
1 回答
1402 浏览

powershell - Powershell 加速 Get-MessageTrackingLog

目前,我正在尝试获取所有禁用用户的输出及其消息计数作为交换。这很容易通过 foreach 循环:

问题是这需要几个小时才能完成,因为它一次只运行一个用户。我的目标是通过作业或并行运行多个查询。由于交换服务器的策略限制,这需要以 10 个块为单位运行。

编辑(有关原因的更多信息):

查找用户的消息计数的原因是,他们被禁用并且坐在禁用的 OU 中。这样做的原因是他们的邮件转发给另一个收件人。或者,他们的邮箱已被委派。这是用于管家的。此搜索的结果将由 MessageCount = 0 过滤。然后它将被报告/保存为 csv/users 已删除。

披露:我对运行作业或在 powershell 中并行运行非常无知。而且,我的 google-foo 似乎坏了。对此的任何指导或帮助将不胜感激。

版本信息:

更新:

在遵循 Shawn 的指导后,我成功地大大加快了这些请求的速度。

更新代码:

我遇到的问题是每个用户(最后 3 个用户除外)都显示 0 作为消息计数。我知道这是错误的。这难道不是在等待 Get-MessageTrackingLog -sender 的查询完成吗?

示例(总共 77 个用户):

除了最后三个节目之外的所有节目:

邮箱:ab@something.com

禁用日期:02/08/2018

登录:ab

类型 : OnPrem

用户:a,b

地点 : 爱荷华州克利尔菲尔德

收到的消息:0

0 投票
1 回答
238 浏览

powershell - 在运行作业时在脚本块内分配一个变量

Terminate part of powershell script and continue相关。
部分与Powershell Job Always Shows Complete相关。

我的脚本在本地运行并访问远程 PC 的注册表配置单元。我需要将注册表项的值写入$RegHive变量。而且我想将其作为一项工作进行监控,以防某些 PC 死机,我可以终止命令并转移到另一台 PC。

我的原始代码是:

但无论我做什么,变量$RegHive都是空的。

如果我在一侧$RegHive = (Get-Job | Receive-Job)分配了一些值$RegHive,看起来就像我会在没有作业/脚本块的情况下正常运行它一样,即:

甚至有相同的$RegHive.SubKeyCount

但是“正常”的人有$RegHive.GetSubKeyName()方法,而工作的人没有。

如何逃避分配变量Receive-Job并直接在作为作业运行的脚本块内进行分配?

简单来说:

如何在$a没有 的情况下等于 3 $a = (Get-job | Receive-job)

0 投票
1 回答
665 浏览

powershell - 预定作业中的新会话

我想编写脚本,为 Exchange 服务器上的某些用户启用邮件转发并在指定时间将其关闭。

但是当$script_bloc在 job 中执行时:New-PSSession返回 null 而没有任何错误。

我可以传递给New-PSSession硬编码的凭据,在这种情况下它可以按我的预期工作,但我不想这样做,因为我的密码可能在工作开始时过期。

知道为什么New-PSSession不在工作中工作吗?以及如何让它发挥作用?

0 投票
1 回答
2951 浏览

multithreading - 使用 Powershell 作业更新 WPF GUI

我一直在尝试为我的个人 Powershell 脚本创建响应式 GUI。我想出了一个在网上被高度讨论的问题:冻结 GUI(因为 Powershell 是单线程的)。

与此问题类似,但我的案例特定于 Powershell。我成功实现了一个基于 Powershell 的解决方案,用于创建依赖于 XAML 表单的 GUI。现在,让我们考虑这段代码:

xamlGUI是表单本身和$Somebutton/$SomeLabel是我能够从 xaml 读取并转换为 Powershell 变量的控件。

我试图理解为什么我开始的工作在计算完成后没有更新我的标签。它实际上什么也没做。

我是 Powershell 工作的新手,我想知道我是否缺少某些东西。

0 投票
1 回答
294 浏览

azure - Powershell 作业和 Set-AzureRmRouteTable

当我在脚本块中使用此 cmdlet 时,我不断收到此错误

对我来说毫无意义。每次我搜索此错误时,它都会引用与网络相关的 cmdlet。

一些新配置已添加到我的路由表中,但该错误出现了一些错误..嗯..

新错误 -