问题标签 [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.
powershell - 如何从 Powershell 作业捕获 .NET 跟踪输出?
我在 Powershell 中使用 .NET 组件,它使用 .NETTrace.TraceWarning
等Trace.TraceInformation
。
当我运行我的 Powershell 脚本时,我想将这些跟踪输出到控制台。
这在我在当前会话中使用组件时有效。例如(模拟跟踪的效果)给我 'Hello' 输出到控制台:
但是,如果我在 Powershell 作业中做同样的事情,我不会得到任何输出,即使 ConsoleTraceListener 应该写入 STDOUT,而我又希望被作业捕获。(有趣Console.WriteLine
的是,也不能从工作中工作——但Write-Host
确实如此)。
我开始我的工作是这样的:
powershell - 从另一个工作流调用工作流作为 PowerShell 中的作业
我必须从另一个工作流异步调用一个长时间运行的工作流。有没有办法在powershell中做到这一点?
现在当我打电话
我需要调用工作流立即返回打印“调用的工作流”,以便我可以在被调用的工作流在后台运行时开始继续我的工作。
powershell - 无法使用备用凭据通过 PowerShell 插件在 Jenkins 上运行 Start-Job 作业
系统:Windows Server 2012 R2 | PowerShell v4 | 詹金斯 v1.607 | 64 位 Java 版本 8u60
无论出于何种原因,我都能够登录到运行 Jenkins 的 Windows 服务器,并毫无问题地执行以下代码:
在尝试在 Jenkins 作业中执行相同的代码时,使用 PowerShell 插件,使用我在 $Creds 中使用的相同用户凭据,它会在没有任何有用信息的情况下失败。凭证已通过验证。这是我得到的错误:
我使用Resolve-Error 函数(如此处所示)来尝试获取更多信息。这是输出:
仍然没有有用的信息。我不知道可能是什么问题,也不知道如何进行。
powershell - 如何判断 Start-Job 命令启动了哪些进程?
Start-Job
我有(继承)一个 PowerShell 脚本,该脚本通过使用cmdlet 和-FilePath
参数调用其他 PowerShell 脚本来调用它们。例如,我有一个什么都不做的脚本:
我可以通过工作调用:
是否有任何简单可靠的方法来找出与这项工作相关的进程(我相信这将是一个额外的powershell.exe)?显然,这很容易通过一项工作进行测试,但在服务器上我可能会同时运行许多这些工作。
为什么我想做/知道这个?
我是一个新角色,在一个服务器上工作,该服务器有多个运行各种脚本的计划任务。其中一些调用我的前任选择使用 Start-Job 调用的其他脚本,可能是因为它们可以长时间运行(多个小时)并希望它们并行工作。有时它们似乎被卡住了,我想杀死它们,但不想冒险阻止仍然健康的东西。
沿着这条路走下去,可能对如何匹配作业和流程更加好奇,因为我很可能会在不久的将来开始重写其中的一些脚本。
powershell - 没有从接收作业中获得输出
运行此脚本时,变量 $var 为空:
如何从接收作业中获取输出?
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
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)
?
powershell - 预定作业中的新会话
我想编写脚本,为 Exchange 服务器上的某些用户启用邮件转发并在指定时间将其关闭。
但是当$script_bloc
在 job 中执行时:New-PSSession
返回 null 而没有任何错误。
我可以传递给New-PSSession
硬编码的凭据,在这种情况下它可以按我的预期工作,但我不想这样做,因为我的密码可能在工作开始时过期。
知道为什么New-PSSession
不在工作中工作吗?以及如何让它发挥作用?
multithreading - 使用 Powershell 作业更新 WPF GUI
我一直在尝试为我的个人 Powershell 脚本创建响应式 GUI。我想出了一个在网上被高度讨论的问题:冻结 GUI(因为 Powershell 是单线程的)。
与此问题类似,但我的案例特定于 Powershell。我成功实现了一个基于 Powershell 的解决方案,用于创建依赖于 XAML 表单的 GUI。现在,让我们考虑这段代码:
xamlGUI
是表单本身和$Somebutton
/$SomeLabel
是我能够从 xaml 读取并转换为 Powershell 变量的控件。
我试图理解为什么我开始的工作在计算完成后没有更新我的标签。它实际上什么也没做。
我是 Powershell 工作的新手,我想知道我是否缺少某些东西。
azure - Powershell 作业和 Set-AzureRmRouteTable
当我在脚本块中使用此 cmdlet 时,我不断收到此错误
对我来说毫无意义。每次我搜索此错误时,它都会引用与网络相关的 cmdlet。
一些新配置已添加到我的路由表中,但该错误出现了一些错误..嗯..
新错误 -