问题标签 [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 投票
3 回答
2856 浏览

powershell - 我不能在 ForEach-Object 中使用开始/处理/结束块?

我有以下代码:

第一个“f”调用成功,而 %{} 块显示错误:

但为什么?ForEach-Object不支持begin//块processend

0 投票
2 回答
827 浏览

powershell - 如何将脚本块作为参数传递并执行多次?

我希望将“Write-Host mm”作为脚本块传递给函数“f”,我希望“f”会执行 10 次,所以我尝试了:

不幸的是,powershell 给出了错误:

感谢杰森的第一个回答,但似乎不起作用:谢谢,但似乎这不起作用,我有 PS 4.0 和

执行这个脚本并打印出来:谢谢,但这似乎不起作用,我有 PS 4.0 和

这很奇怪!一个脚本自己打印出来!我有 PS4.0 并正在运行 ISE。这是为什么?

0 投票
0 回答
580 浏览

c# - PowerShell 使用 Hashtable 和 ScriptBlock 作为 C# 中的参数

我正在尝试对 Exchange 服务器执行一些远程 PowerShell 命令。现在我在参数中执行 ScriptBlocks 时遇到问题。

我的 C# 代码如下所示:

我知道缺少一些东西(runspace open fe),但是这段代码应该只是一个例子,因为我的实际代码是动态工作的,所以你看不到真正的命令。怎么了...我的结果显示“ManagedByGuid”列为空。第一个参数中的重命名仅在表达式中根本没有脚本时才有效(一旦我将表达式设置为ScriptBlock.Create("$_.Name")它也会提供空值)。所以似乎powershell没有执行脚本块,而是只在没有脚本的情况下简单地评估字符串......

当我不是将命令分开而不是将一个完成的脚本作为字符串传递给 powershell 时,它工作得很好......例如:

我也可以使用这种方法,但首先我不想重做所有代码,其次脚本块也应该工作?

有谁知道为什么这不起作用......?

0 投票
3 回答
635 浏览

variables - 在脚本块中引用变量

我有以下代码在 PowerShell 中解析 XML 文件,然后遍历配置文件中的条目(它们是备份作业)并执行备份(通过调用函数)。

Start-RSJob是一个自定义 PowerShell 模块,类似于Start-Job处理启动并行作业的 cmdlet。

RSJob 和本机 PowerShell Start-Jobcmdlet 似乎都不处理 PowerShell 转录(日志记录)。Write-Output因此,除了Out-File捕获作业的输出之外,我还在使用.

我遇到的问题是,在Write-Output脚本的一部分中,我想在日志文件名中包含备份的名称。换句话说,我最终得到了一个名为“corebackup 2015-08-24.log”的文件,而不是“corebackup backupname 2015-08-24.log”。

问题是我如何传递$_.NameOut-File. 现在写了一个日志,但没有作业名称。

0 投票
1 回答
273 浏览

powershell - 从字符串创建脚本块

这是我想要在脚本块中工作的内容

每次虽然我得到

使用“1”参数调用“Create”的异常:“At line:4 char:4 + for /f "tokens=14" %i in ('"ipconfig | findstr IPv4"') do set ip=%i + ~ 在关键字 'for' 之后缺少开头的 '('。" 在 line:1 char:1 + $scriptblock=[scriptblock]::create($scriptblock) + ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ParseException

我尝试先将其设置为 here 字符串,然后使用[scriptblock]::create(),但仍然得到相同的结果。

如何将其放入脚本块?

0 投票
1 回答
1316 浏览

powershell - 将数组传递给脚本块中的命名参数之一?

我试图找出一种将数组传递给单独脚本中的命名参数的方法。但是,我找不到任何解决方案。

测试2.ps1:

主脚本:

执行时,我得到了输出

下面的行是从另一个 Stackoverflow 答案复制的,但我不太明白前 3 个命名参数是如何工作的。

尤其是 "$(&{$args} @params)" 部分。我对喷溅有基本的了解,但这超出了我的范围。如果有人可以为我解释一下语法,将不胜感激。

0 投票
1 回答
1097 浏览

powershell - 解释从 PowerShell 闭包调用的函数的作用域

以下 PowerShell 代码显示了从闭包调用的函数的意外作用域行为。你能解释这是“设计”还是缺陷?

上面的输出是

大多数输出​​对我来说很有意义:

脚本块输出In block x=4,因为它的父范围是runblock函数。由于其父范围是脚本块范围,因此printx函数输出。x=3

闭包输出In closure x=1,因为 的值$xGetNewClosure调用捕获。一切如预期。

printx但是:来自闭包输出的调用in printx: x=4。因此,在其中printx执行的范围不受 where 闭包范围的影响$x = 3

我觉得奇怪的是,从普通脚本块调用的函数确实看到了脚本块范围内的变量,但从闭包调用的函数却看不到闭包中的变量。

0 投票
2 回答
4262 浏览

powershell-3.0 - 如何将局部变量传递给 Invoke-Command 的 -ScriptBlock

我正在尝试从 Server-2 对 Server-1(即远程服务器)执行以下 PowerShell 脚本:

问题:代码部分

我想让它参数化,作为每个项目的值D:\Test\UsageTracking.iqp并且Dev将改变。如何使用参数传入新值?如果可能的话,这就是我想要的方式:

当我在上面运行时,我收到以下错误消息:

任何帮助都会让它工作。

0 投票
1 回答
1777 浏览

c# - Powershell 为 Func 创建脚本块而不是行动

我有一个试图从 Powershell 使用的类。这个类有一个方法,叫做Execute(),有两个重载:一个接受 a Func<T>,一个接受 a Action<T>。我可以调用Action<T>使用脚本块作为委托的重载,但我不知道如何调用采用 a 的重载Func<T>

如何调用需要 a 的重载Func<T>?我认为这需要创建一个具有返回类型的 ScriptBlock,但我不知道该怎么做;Powershell 解析器显然不够聪明,无法自动执行此操作。

0 投票
1 回答
3580 浏览

powershell - 使用 EOF 的 Powershell psql 代码块

我在linux中使用EOF对'psql'命令进行了多行注入。

psql << EOF sql1 sql2

EOF

我想在 windows powershell 中做同样的事情,因为(是的,这对我来说很难)我们从 linux 迁移到 windows。我尝试了 scriptblock,使用 psql 作为块,使用命令作为参数。行不通。请让我知道如何在 Windows PowerShell 中模拟 EOF。谷歌对此没有太多了解。