问题标签 [powershell-workflow]

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 回答
1431 浏览

powershell - 利用工作流程:foreach -parallel、invoke-command、脚本结构

在运行 PowerShell v5 April preview 的机器上:

  • 尝试从 AD 获取服务器列表(是的,Windows 2003,它们需要消失!)并记下找到的服务器总数
  • Test-Connection对他们所有人并注意总响应
  • 在所有服务器上调用一个命令(需要不同的凭据)以运行一堆命令来收集有关每个服务器的信息并输出到它们上的文件
  • 创建新的 PSDrive 以映射到每个服务器以下载文件并记录下载的文件总数(即响应 ping 并成功调用命令/下载结果的服务器之间的差异)
  • 然后运行一个Get-Printers不会在 PowerShell v2 上运行的 cmdlet,并输出到与本地计算机上的下载结果相同的文件夹中的文件

我有一个工作脚本——它非常慢,我想学习和改进它,让它更快、更优雅。我发现很难把这些都写出来解释一下哈哈。如果你想解决这个问题,你会用什么方法来解决?

要开始制定更好的方法:

获取服务器列表并存储在变量中是可以的。

合计一下就OK了。

现在可能有一些不再存在的 2003 服务器没有从 AD 中删除,所以让我们对它们进行 ping 操作。

如果说 2003 美元中有 300 个对象并且一半没有响应,这将永远存在。

7分钟...

所以我想,嘿,让我们制作一个 Powershell 工作流,这样我就可以使用foreach -parallel. 如果我编写一个快速的工作流程来从 AD 和 foreach 获取服务器Test-Connection

27 秒....

仅让这部分工作可以节省时间,但是我无法确定哪种方式来构建我的脚本/功能/工作流程或任何最有效的方式。

我想出了两个障碍。

  1. 在 ping 服务器的小型工作流程中,我无法(弄清楚如何)将结果存储在变量中以查看总数(使用$variable = Test-Connection ...Test-Connection | New-Variable,因此如果我看不到两者之间的差异,那么 ping 它们毫无意义广告中的服务器和响应的服务器。我可以使用

    但它很慢,如果我使用更快的工作流程,我不能Format-TableGet-Printers.

  2. 我试图让整个事情成为foreach -parallel在所需位置使用的工作流程,但是因为我有一个$creds = Get-Crendential可以使用我Invoke-Command -Credential $Creds的工作流程甚至无法加载的工作流程。

似乎对于脚本的每一步我想要的每一个好处,都有一个破坏者使它不值得做,但我相信有一种方法:)

整个工作但缓慢的东西,经过编辑以删除敏感的东西等,只是为了得到这个概念。它可以做成一个带有参数和详细输出等的函数,但这也是一个待办事项。我想先看看能不能加速。

0 投票
1 回答
4462 浏览

powershell - 在 powershell 工作流程中并行创建对象并将其添加到数组中

我需要在工作流中并行创建许多对象并将所有对象添加到数组中。我的代码是这样的

但是这个输出是

我想要一个包含三个对象的数组。在这种情况下如何实现这一点

0 投票
1 回答
5511 浏览

powershell - 无法通过任务计划程序恢复工作流

在 powershell 窗口中,我运行以下工作流程:

然后要恢复工作流程,我通过任务计划程序安排了以下计划以在启动时运行:

工作流不会在启动时恢复,也不会通过任务计划程序手动触发。zqqfff.txt的内容表示任务调度器激活的powershell看不到工作流。当我运行 Get-Job 时,常规的 powershell 窗口可以看到工作流。

(普通的 powershell 窗口和任务调度程序 powershell 实例都以同一用户身份运行。)

我使用 procmon 来查看发生了什么,从中可以看出,当 powershell 通常与 taskscheduler 相比时,它正在查看不同的工作流持久性路径,即:

C:\Users\weijgerss\AppData\Local\microsoft\windows\PowerShell\WF\PS\default\S-1-5-21-3519956147-933941082-741972881-500_EL(普通的powershell窗口使用这个文件夹)C:\ Users\weijgerss\AppData\Local\microsoft\windows\PowerShell\WF\PS\default\S-1-5-21-3519956147-933941082-741972881-500_EL_NI(任务计划程序激活的 powershell 实例使用此文件夹)

我完全被难住了。如何让任务计划程序激活 powershell 实例以查看与普通 powershell 窗口相同的工作流?

0 投票
1 回答
1209 浏览

arrays - 在 PowerShell 工作流程中声明数组

我在 powershell 工作流程中需要一个大小为 n 的数组

这在该行显示错误

我们可以这样使用

但是我的情况不同,我必须使用索引访问数组。有没有办法在工作流程中做到这一点

0 投票
1 回答
533 浏览

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

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

现在当我打电话

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

0 投票
1 回答
119 浏览

powershell - Powershell 工作流处理

为什么这会以(几乎)降序呈现列表?

偶尔,有一个数字乱序,但 (0..100) 会生成一个从 0 开始到 100 结束的列表。

0 投票
0 回答
795 浏览

powershell - 在工作流和内联脚本中使用 New-Cluster 创建集群失败

当我尝试使用工作流中的 PowerShell 和这样的内联脚本从其他主机远程安装集群时:

我收到此错误:

任何想法?

0 投票
1 回答
41 浏览

parallel-processing - 并行处理服务器

我尝试让foreach并行执行,但它给了我一个“foreach 循环附近的语法错误”错误。

0 投票
0 回答
472 浏览

regex - 向 Invoke-WebRequest 添加暂停

我正在尝试捕获页面上的数据,该页面仅在初始页面加载几秒钟后出现在页面上。当我运行下面的代码时,它会返回Loading...这是它一开始在页面上所说的,但是我需要在下面添加逻辑,所以运行时它会等到它没有说Loading...然后对 Loading... 后显示的实际歌曲(或其他数据)进行匹配

我需要添加的逻辑是等到它不再说Loading...并且等待不超过 30 秒(作为超时),以防它永远不会从说Loading...

我需要使用UseBasicParsing选项,因为我需要将其与 Internet Explorer 隔离,还需要使用Invoke-WebRequest而不是 IE 方法,因为这将作为工作流在 Azure 自动化中运行。

0 投票
1 回答
864 浏览

powershell - powershell 工作流程 - 不支持参数飞溅?

我正在摸不着头脑,试图弄清楚为什么参数 splatting 不适用于在 Azure 自动化中执行的一组工作流运行手册。

我有 3 个以嵌套方式调用的运行手册(超级、子、子)。它们都(通常)共享相同的参数。在我的真实场景中,我有多个子和子 Runbook,我想使用 splatting,因此我可以定义一个哈希表并根据需要传递它,而不必列出所有参数。

我也尝试过使用该-PSParameterCollection参数。但是,在 Azure 自动化中,这似乎仅适用于最顶层的 Runbook(已经有效),因为它会在子级中引发参数未找到错误。这里的注释部分说嵌套三层深度的工作流不支持任何公共参数,包括工作流公共参数,这似乎可能是一个问题,具体取决于这些运行手册的编译方式。但我认为我不能在不限制运行手册的可重用性的情况下避免这种情况。我不希望被调用的工作流被编译为调用工作流中的嵌套工作流。

我得到的错误是:

$newnumber = sub @splatter
                         ~~~~~~~~~~
找不到名为“0”的参数。支持的参数有:Debug、ErrorAction、....

奇怪的是,与我在这些测试运行手册中看到的不同,在我的“真实世界”工作流程中,我没有在顶级运行手册中收到此错误 - 仅在从“子”中调用“子”运行手册时.