问题标签 [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 - 我不能在 ForEach-Object 中使用开始/处理/结束块?
我有以下代码:
第一个“f”调用成功,而 %{} 块显示错误:
但为什么?ForEach-Object
不支持begin
//块process
?end
powershell - 如何将脚本块作为参数传递并执行多次?
我希望将“Write-Host mm”作为脚本块传递给函数“f”,我希望“f”会执行 10 次,所以我尝试了:
不幸的是,powershell 给出了错误:
感谢杰森的第一个回答,但似乎不起作用:谢谢,但似乎这不起作用,我有 PS 4.0 和
执行这个脚本并打印出来:谢谢,但这似乎不起作用,我有 PS 4.0 和
这很奇怪!一个脚本自己打印出来!我有 PS4.0 并正在运行 ISE。这是为什么?
c# - PowerShell 使用 Hashtable 和 ScriptBlock 作为 C# 中的参数
我正在尝试对 Exchange 服务器执行一些远程 PowerShell 命令。现在我在参数中执行 ScriptBlocks 时遇到问题。
我的 C# 代码如下所示:
我知道缺少一些东西(runspace open fe),但是这段代码应该只是一个例子,因为我的实际代码是动态工作的,所以你看不到真正的命令。怎么了...我的结果显示“ManagedByGuid”列为空。第一个参数中的重命名仅在表达式中根本没有脚本时才有效(一旦我将表达式设置为ScriptBlock.Create("$_.Name")
它也会提供空值)。所以似乎powershell没有执行脚本块,而是只在没有脚本的情况下简单地评估字符串......
当我不是将命令分开而不是将一个完成的脚本作为字符串传递给 powershell 时,它工作得很好......例如:
我也可以使用这种方法,但首先我不想重做所有代码,其次脚本块也应该工作?
有谁知道为什么这不起作用......?
variables - 在脚本块中引用变量
我有以下代码在 PowerShell 中解析 XML 文件,然后遍历配置文件中的条目(它们是备份作业)并执行备份(通过调用函数)。
Start-RSJob
是一个自定义 PowerShell 模块,类似于Start-Job
处理启动并行作业的 cmdlet。
RSJob 和本机 PowerShell Start-Job
cmdlet 似乎都不处理 PowerShell 转录(日志记录)。Write-Output
因此,除了Out-File
捕获作业的输出之外,我还在使用.
我遇到的问题是,在Write-Output
脚本的一部分中,我想在日志文件名中包含备份的名称。换句话说,我最终得到了一个名为“corebackup 2015-08-24.log”的文件,而不是“corebackup backupname 2015-08-24.log”。
问题是我如何传递$_.Name
给Out-File
. 现在写了一个日志,但没有作业名称。
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()
,但仍然得到相同的结果。
如何将其放入脚本块?
powershell - 将数组传递给脚本块中的命名参数之一?
我试图找出一种将数组传递给单独脚本中的命名参数的方法。但是,我找不到任何解决方案。
测试2.ps1:
主脚本:
执行时,我得到了输出
下面的行是从另一个 Stackoverflow 答案复制的,但我不太明白前 3 个命名参数是如何工作的。
尤其是 "$(&{$args} @params)" 部分。我对喷溅有基本的了解,但这超出了我的范围。如果有人可以为我解释一下语法,将不胜感激。
powershell - 解释从 PowerShell 闭包调用的函数的作用域
以下 PowerShell 代码显示了从闭包调用的函数的意外作用域行为。你能解释这是“设计”还是缺陷?
上面的输出是
大多数输出对我来说很有意义:
脚本块输出In block x=4
,因为它的父范围是runblock
函数。由于其父范围是脚本块范围,因此printx
函数输出。x=3
闭包输出In closure x=1
,因为 的值$x
被GetNewClosure
调用捕获。一切如预期。
printx
但是:来自闭包输出的调用in printx: x=4
。因此,在其中printx
执行的范围不受 where 闭包范围的影响$x = 3
。
我觉得奇怪的是,从普通脚本块调用的函数确实看到了脚本块范围内的变量,但从闭包调用的函数却看不到闭包中的变量。
powershell-3.0 - 如何将局部变量传递给 Invoke-Command 的 -ScriptBlock
我正在尝试从 Server-2 对 Server-1(即远程服务器)执行以下 PowerShell 脚本:
问题:代码部分
我想让它参数化,作为每个项目的值D:\Test\UsageTracking.iqp
并且Dev
将改变。如何使用参数传入新值?如果可能的话,这就是我想要的方式:
当我在上面运行时,我收到以下错误消息:
任何帮助都会让它工作。
c# - Powershell 为 Func 创建脚本块而不是行动
我有一个试图从 Powershell 使用的类。这个类有一个方法,叫做Execute()
,有两个重载:一个接受 a Func<T>
,一个接受 a Action<T>
。我可以调用Action<T>
使用脚本块作为委托的重载,但我不知道如何调用采用 a 的重载Func<T>
:
如何调用需要 a 的重载Func<T>
?我认为这需要创建一个具有返回类型的 ScriptBlock,但我不知道该怎么做;Powershell 解析器显然不够聪明,无法自动执行此操作。
powershell - 使用 EOF 的 Powershell psql 代码块
我在linux中使用EOF对'psql'命令进行了多行注入。
psql << EOF sql1 sql2
EOF
我想在 windows powershell 中做同样的事情,因为(是的,这对我来说很难)我们从 linux 迁移到 windows。我尝试了 scriptblock,使用 psql 作为块,使用命令作为参数。行不通。请让我知道如何在 Windows PowerShell 中模拟 EOF。谷歌对此没有太多了解。