问题标签 [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.
powershell - 具有多个脚本块参数的 Powershell 函数
我一直无法创建一个接受多个 scriptblock 参数的 Powershell 函数。这是简化的测试脚本。多个脚本块有什么问题?
这会产生以下输出:
powershell - PowerShell ScriptBlock 和多种功能
我写了以下代码:
它有效,但我不想GetBar
在GetFoo
.
我可以做这样的事情吗?
基本上我有选择地将我想要的函数放在 ScriptBlock 中,然后调用其中一个。这样我就不必在函数内部定义函数,我可以通过注入我想成为该 ScriptBlock 一部分的函数来构造 ScriptBlock。
powershell - 在 ScriptBlock 中包含 PowerShell 文件
我写了以下代码
这不起作用,因为它说 The term .\MyFunctions.ps1 is not Recognized as commandlet
为什么我不能在脚本块中包含文件?
powershell - 如何将命名函数作为参数传递(脚本块)
让我们以经典的一阶函数为例:
这工作得很好:
这不会:
因为 Get-MyName 被评估,而不是作为值本身传递。如何将 Get-MyName 作为值传递?
powershell - 将参数传递给PowerShell中的脚本块
我想你不能这样做:
那么如何将我的变量传递给脚本块 $block?
powershell - Powershell Start-Job 未执行脚本块
标题说明了一切,我有一个带有脚本块的 Start-Job,它不执行命令,而是输出有关作业的信息。
执行的顺序如下
以及带有 start-job 的模块
我没有收到任何错误,而是没有执行命令,而是为两个启动作业编写了以下命令
这可能与我编写脚本块的方式有关,但我无法弄清楚与我见过的所有其他示例有什么不同。
是否可以使用 read-host 命令启动作业等待用户输入?
编辑:我发现了为什么作业没有执行的问题。参数未正确传递。这是我找到解决方案的链接。
最后一个示例有效,即使对于单个参数,您也必须这样做。
我还有一个问题。我上面写的东西仍然会输出到控制台。有什么方法可以抑制 start-job cmdlet 的不需要的输出?
powershell-remoting - powershell 脚本块的价值是什么?
我正在尝试使用 powershell 远程处理运行一段远程代码,并得到一些我无法解释的奇怪行为。这是我运行的命令序列。
有谁知道这种行为的原因?我觉得很奇怪。返回语句被忽略,脚本块被评估为第一个“未捕获”表达式。嗯?
另外,如果我确实希望这个块总是评估 return 语句,甚至是最后一个语句,有谁知道我可以如何做到这一点?
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}
。
我意识到我可能做错了,我非常感谢被指出正确的方向。
编辑:为了澄清,这里是我想要完成的大致轮廓:
实际上,这可能涉及哈希表而不是数组,因此我知道如何处理每组结果。
powershell - Powershell Start-Process 启动 Powershell 会话并传递局部变量
有没有办法使用 Powershell Start-Process cmdlet 来启动一个新的 Powershell 会话并传递一个带有局部变量的脚本块(其中一个将是一个数组)?
例子:
谢谢。
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
$site
Invoke-Command
我的解决方案:我编写了一个函数来计算它调用的每个服务器上的正确范围,然后使用返回值作为Get-Variable
and选项Set-Variable
的输入。-Scope
这解决了我的问题并允许分配和访问变量。
问题:Microsoft 记录在哪里(如果在任何地方)?(我在 TechNet 上的about_scope中找不到它,它说它适用于 2.x 和 3.x,并且是我在其他问题中看到的标准参考)。
另外,有没有更好/正确的方法来做到这一点?