问题标签 [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.
azure-automation - 如何迭代输入参数的对象属性
我有一个 Azure 自动化 Powershell 工作流:
我正在使用“测试”窗格对其进行测试,并将值作为{"FirstName": "John", "LastName": "Smith"}
. 我也尝试过在这两种情况下{"FirstName"="John";"LastName"="Smith"}
添加。@
据此_
如果您的 Runbook 具有对象类型输入参数,则使用带有 (name,value) 对的 PowerShell 哈希表来传递一个值。例如,如果 Runbook 中有以下参数:
[Parameter (Mandatory = $true)][object] $FullName
则将以下值传递给参数:@{"FirstName"="Joe";"MiddleName"="Bob";"LastName"="Smith"}
但在我所有的测试$p
中都是空的。
如何定义一个实际对象,将其传入,然后遍历属性名称和值?
powershell - 在 Powershell 工作流中玩弄对象
我正在尝试学习如何在 Powershell 中使用 Workflow 以及如何绕过应用于变量(和我的例子中的对象)的限制。但是当我尝试从 InlineScript 活动修改工作流范围对象时,我遇到了一个问题。
代码的作用:
$VMSettings
使用 Json 文件内容设置。此文件包含我想在 Hyper-V 中创建的 VM 设置;$VMHostSettings
使用 Hyper-V 主机参数设置;- 启动一个
Foreach -Parallel
循环以在每个 VM 上并行工作:- 按顺序,我从 Workflow 范围写入 VM 的名称和路径;
- 在一项
InlineScript
活动中,我正在编写 VM 的名称,$using
作为范围如何工作的测试; - 如果
$VM.path
为空,我将开始一项新InlineScript
活动,其中我:$VM
使用工作流范围内的变量内容设置一个新变量;- 改变
path
这个新变量的属性并显示它;
- 我再次显示工作流范围
$VM.path
以查看是否发生了变化。
这是代码:
到目前为止,当我向工作流提供$VM.path
空的数据时,一切都很好(所以我可以输入 If 块),我得到了这个结果:
我们可以看到一切正常。新变量的 InlineScript 范围修改对$VM
同名的工作流范围变量没有影响,这是正常行为。
现在,如果我想从 InlineScript 活动修改工作流范围变量,我会遇到一些问题。我一直在关注此 Microsoft Doc 页面中的信息,他们在其中显示了这段代码:
因此,我一直在更改自己的代码来执行此操作:
我正在使用活动$VM
的内容设置工作流范围变量InlineScript
。在此活动中,我仍在将工作流范围变量的内容复制到 InlineScript 范围变量,对 InlineScript 范围变量进行更改,然后将其返回。
执行此操作时,我收到以下错误:
Property 'path' cannot be found on this object; make sure it exists and is settable.
此错误出现在与$VM = InlineScript {
. 我还应该提到,我在运行脚本后得到了这个结果。就像工作流范围$VM
变量被删除而不是设置一样:
关于我做错了什么的任何线索?
powershell - 工作流程在 foreach 并行中的长工作流程调用上返回不可预测的结果
当我在另一个工作流的 foreach -parallel 中调用一个工作流时,我会得到奇怪且不一致的结果。这是一些示例代码:
将会发生的是,它将Stuff
以不同的间隔打印出来,中间有空白行。有时它甚至根本不会打印Stuff
。这里有些例子:
其他:
我可以猜测线程正在发生一些事情,并且作为一个长期运行的工作流程,它在某种程度上是异步的并将一些 PSDataCollection 返回到 $rezult,但我不明白为什么它不是同步的。还有其他一些奇怪的事情,比如如果我返回一个对象,我会得到一个数组,其中所有元素都被塞进一个元素中,然后是一堆空元素。我以上面的例子为例,但实际上,当我使用 Invoke-RestMethod 时,这对我打击最大,因为有时它返回得很快,一切都很好,但有时它很慢并产生这种奇怪的行为。此外,当 foreach 上的 -throttlelimit 设置为 1 时,它工作得非常好,尽管速度很慢。
谁能解释这里发生了什么或如何解决它?
powershell - 在 PowerShell 并行工作流中将输出导出到 CSV 时出现问题
我正在使用下面的脚本来获取有关多个远程服务器的端口状态的详细信息。
大多数情况下它正在工作,但它无法给出完整的结果,因为由于我们将其作为并行工作流运行,如果两台服务器同时完成处理,它将尝试同时将结果写入 CSV 文件服务器导致以下错误。CSV 文件中缺少大约 6% 的结果:
Microsoft.PowerShell.Utility\Write-Error:该进程无法访问文件“C:\Temp\Results.csv”,因为它正被另一个进程使用。在 Test-OpenPortWF:54 char:54 + + CategoryInfo : NotSpecified: (:) [Write-Error], CmdletInvocationException + FullyQualifiedErrorId : System.Management.Automation.CmdletInvocationException,Microsoft.PowerShell.Commands.WriteErrorCommand + PSComputerName : [localhost]
我们怎样才能解决这个问题?
sql-server - PowerShell 中的并行 T-SQL 执行
任何人都可以帮助解决这个问题吗?我指的是互联网上的一个示例,用于并行执行 T-SQL 语句。
我希望能够一次在同一个实例上执行相同的 T-SQL,以验证关于锁定的概念工作。为了做到这一点,我调整了脚本,以便我可以通过更改
这是完整的脚本。基本上,主要语句可以是您想要的任何 T-SQL,它将填充$sqlcmds
该语句以使该语句通过您希望的尽可能多的迭代。
执行此操作时,我收到以下消息:
Run-PSQL:无法将参数绑定到参数“查询”,因为它是一个空字符串。
powershell - 从工作流更新全局变量
我得到的输出如下
我无法更新我在函数和工作流之外声明的数组。
powershell - 将参数传递给 Invoke-Command
这是我的脚本:
此工作流嵌套在一个函数中。如何将参数从我的顶级函数传递到Invoke-Command
?里面InlineScript{}
?$using:MyVar
似乎不起作用。
multithreading - 如何将 args 传递给并行 foreach
我将端点列表作为脚本的参数,我想向所有端点发送 http 请求,但我不想按顺序进行,而是同时进行。我发现有类似并行 foreach 的东西,但是我无法访问args
那里。
问题:如何以并行模式发送这个 HTTP 请求?
powershell - Powershell Workflow 的数组输出未正确格式化或导出
所以我写了一个脚本来遍历和优化一些VHDX文件并输出结果。为了(显着)减少脚本运行时间,我自学了工作流程。这本身就是一次冒险,但我让脚本工作到输出结果的地步。调用变量并按保存百分比将其传递到排序对象中,然后按作业状态传递到排序对象中,然后传递到格式表中;代码实际上并没有对数据进行排序。它只是按添加到数组的顺序输出。
当它没有从工作流中提取数据时,代码运行良好(而是通过脚本串行运行)。我的假设是工作流将数据作为完整表输出到脚本数组,而不是单个条目,因此在到达脚本时没有任何要排序的内容(脚本将其视为单个条目) .
我仍在努力优化和清理代码,但我正试图让它首先工作。提前抱歉,可能有点难以阅读。
我期望将对象的输出输出到控制台;按状态排序和分组,因此该表仅显示两个或三个部分。我还应该从数组中收到一个未排序的数据 CSV,而是得到一个空的 CSV,其中一行表示“#TYPE Selected.System.Object[]”,一行包含列名。控制台输出如下所示:
输出应该如下所示: