问题标签 [scriptblock]

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

powershell - 具有多个脚本块参数的 Powershell 函数

我一直无法创建一个接受多个 scriptblock 参数的 Powershell 函数。这是简化的测试脚本。多个脚本块有什么问题?

这会产生以下输出:

0 投票
4 回答
11493 浏览

powershell - PowerShell ScriptBlock 和多种功能

我写了以下代码:

它有效,但我不想GetBarGetFoo.

我可以做这样的事情吗?

基本上我有选择地将我想要的函数放在 ScriptBlock 中,然后调用其中一个。这样我就不必在函数内部定义函数,我可以通过注入我想成为该 ScriptBlock 一部分的函数来构造 ScriptBlock。

0 投票
1 回答
1071 浏览

powershell - 在 ScriptBlock 中包含 PowerShell 文件

我写了以下代码

这不起作用,因为它说 The term .\MyFunctions.ps1 is not Recognized as commandlet

为什么我不能在脚本块中包含文件?

0 投票
4 回答
5981 浏览

powershell - 如何将命名函数作为参数传递(脚本块)

让我们以经典的一阶函数为例:

这工作得很好:

这不会:

因为 Get-MyName 被评估,而不是作为值本身传递。如何将 Get-MyName 作为值传递?

0 投票
8 回答
102789 浏览

powershell - 将参数传递给PowerShell中的脚本块

我想你不能这样做:

那么如何将我的变量传递给脚本块 $block?

0 投票
1 回答
3714 浏览

powershell - Powershell Start-Job 未执行脚本块

标题说明了一切,我有一个带有脚本块的 Start-Job,它不执行命令,而是输出有关作业的信息。

执行的顺序如下

以及带有 start-job 的模块

我没有收到任何错误,而是没有执行命令,而是为两个启动作业编写了以下命令

这可能与我编写脚本块的方式有关,但我无法弄清楚与我见过的所有其他示例有什么不同。

是否可以使用 read-host 命令启动作业等待用户输入?

编辑:我发现了为什么作业没有执行的问题。参数未正确传递。这是我找到解决方案的链接。

将参数传递给 start-job

最后一个示例有效,即使对于单个参数,您也必须这样做。

我还有一个问题。我上面写的东西仍然会输出到控制台。有什么方法可以抑制 start-job cmdlet 的不需要的输出?

0 投票
1 回答
384 浏览

powershell-remoting - powershell 脚本块的价值是什么?

我正在尝试使用 powershell 远程处理运行一段远程代码,并得到一些我无法解释的奇怪行为。这是我运行的命令序列。

有谁知道这种行为的原因?我觉得很奇怪。返回语句被忽略,脚本块被评估为第一个“未捕获”表达式。嗯?

另外,如果我确实希望这个块总是评估 return 语句,甚至是最后一个语句,有谁知道我可以如何做到这一点?

0 投票
3 回答
6424 浏览

powershell - 管道进入 ScriptBlock

我正在尝试找到一些在 PowerShell 中灵活更改/替换管道元素的方法:

我想返回向 Foobar 上校报告的所有用户的 DN,但它给了我错误Expressions are only allowed as the first element of a pipeline.

这是一个简单的例子,但我最终希望能够将管道步骤放入循环中并传递不同的 ScriptBlocks 以获取不同的用户集,或者使用更复杂的 ScriptBlocks(例如:){Where-IsEmployee | Where-IsInDepartment "Finance" | Where-LikesIceCream}

我意识到我可能做错了,我非常感谢被指出正确的方向。

编辑:为了澄清,这里是我想要完成的大致轮廓:

实际上,这可能涉及哈希表而不是数组,因此我知道如何处理每组结果。

0 投票
5 回答
15514 浏览

powershell - Powershell Start-Process 启动 Powershell 会话并传递局部变量

有没有办法使用 Powershell Start-Process cmdlet 来启动一个新的 Powershell 会话并传递一个带有局部变量的脚本块(其中一个将是一个数组)?

例子:

谢谢。

0 投票
1 回答
429 浏览

powershell - Powershell Scope 处理 v2/v3 的未记录更改?

背景:我一直在编写一个 powershell 脚本,将文件从 Windows Server '08(使用 Powershell 2.x)上的 Sharpoint 2010 实例迁移到 Windows Server '12(使用 Powershell 3.x)上的 Sharepoint 2013 实例。我有这个工作,但我注意到范围的处理方式发生了变化。

问题:我有以下代码在两个 PSSession 上运行($param是参数值的哈希表)

我注意到在 PS 2.x 远程会话中,分配给也分配给' 范围内$site 的同一个变量,即要么范围被传递,要么它们共享相同的范围。但是在 PS 3.x 远程会话中分配给不会更改(真正的子范围)中的值。Invoke-Command$siteInvoke-Command

我的解决方案:我编写了一个函数来计算它调用的每个服务器上的正确范围,然后使用返回值作为Get-Variableand选项Set-Variable的输入。-Scope这解决了我的问题并允许分配和访问变量。

问题:Microsoft 记录在哪里(如果在任何地方)?(我在 TechNet 上的about_scope中找不到它,它说它适用于 2.x 和 3.x,并且是我在其他问题中看到的标准参考)。

另外,有没有更好/正确的方法来做到这一点?