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

powershell - Powershell ISE 中脚本块的奇怪问题:将其字符串表示粘贴到记事本中会显示意外字符

我正在尝试创建一个动态脚本块,因此我可以在脚本块中使用变量。

这是我的代码:

在 PowerShell ISE 中运行脚本会产生我期望的结果:

$command 和 $command2 都呈现相同的输出,并且在使用 Get-Member -Verbose 检查时都是有效的脚本块。

我的问题是执行第一行会产生连接错误,其中 $command2 的相同输出工作正常并连接到服务器。

调查这个问题,我发现将 ISE 输出窗口中的两条生成的行复制/粘贴到记事本中会发现问题:

在此处输入图像描述

正如您在 JPG 中看到的那样,在“@”符号之后添加了一个奇数字符,这会导致命令失败......

知道为什么会发生这种情况(以及我该如何解决)?!?

0 投票
1 回答
243 浏览

citrix - 使用 ScriptBlock 调用命令在本地服务器上工作 - 远程结果集为空

尝试使用以下代码获取 Citrix XenApp 6.5 服务器状态时,在区域数据收集器上本地运行 PowerShell 时返回结果集:

然后在 PowerShell 中执行相同的脚本块,并将计算机名设置为 ZDC 并提供凭据。不抛出异常,结果集为空:

运行 Wireshark 网络数据包捕获不是很有帮助,因为 WinRM 流量负载已加密。

关于为什么脚本块中的命令可以在本地工作,但返回一个空的结果集而不抛出异常的任何想法?

谢谢!ds

0 投票
1 回答
2233 浏览

powershell - PowerShell ScriptBlock 变量范围

我无法理解ScriptBlocks 内的范围。我指望某种类似闭包的系统,但我似乎无法让它工作。

我有一个ScriptBlock需要 aparam并返回另一个的ScriptBlock

为了得到ScriptBlock我可以调用$sb1的内部$sb2 = & $sb1 -Message1 "Message1"。这呼应Message1,所以我们知道param是绑定的。

现在我可以调用$sb2with & $sb2 -Message2 "Message2"。我本来期望Message1 Message2的,但它只是写Message2了。

有什么方法可以访问$Message1变量吗?我不能使用本地或脚本变量,因为内部脚本块的多个实例具有不同$Message1的 s。

这是实际 shell 的实际输出:

0 投票
1 回答
2622 浏览

powershell - PowerShell: Start-Job -scriptblock 多行脚本块?

希望有人可以帮助我弄清楚这是否可能。我有 20 行在 while 循环中扫描日志文件。我需要这与脚本的其余部分并行发生。日志扫描循环将条目传递给 SQLite,其他脚本需要对这些信息采取行动——因此希望并行运行它们。

如果我使用 Job-Start 命令,那么 -SciptBlock 函数似乎只接受一行命令。我有太多命令要通过管道传输,所以我需要在脚本块中运行多行。

我尝试了几种方法,但以下示例给出的错误最少。我还在 Invoke-Command -ScriptBlock 中进行了尝试,就像在第二个示例中一样 - 两种方式都不会接受多行脚本块。

请问我在做什么错?

错误如下:

0 投票
3 回答
4380 浏览

powershell - Powershell:使用变量在脚本块中引用 $_ 的属性

在上面的例子中,我想通过一个变量名来访问每个对象的属性。但它不能按预期工作。所以在我的情况下,如何制作

在职的?

0 投票
2 回答
483 浏览

powershell - 如何控制 PowerShell 脚本块的范围

我有一个用 PowerShell 编写的函数:

并将用作:

但是我发现在脚本块中,变量被函数内的参数$name覆盖。$namereplace

有没有办法执行脚本块,以便只有变量$_被添加到脚本块的范围内,而没有别的?

0 投票
1 回答
1383 浏览

powershell - Powershell 将参数传递给嵌套的 Start-Job

我正在尝试将参数传递给嵌套作业。

此输出显示该命令实际上并未呈现字符串中的参数:

我也尝试在脚本块中添加此参数,结果相同:

更新:

尝试了评论中列出的内容。没有运气,同样的结果

更新 2 -$using:executepath

我试过了,我得到了这个错误:

0 投票
1 回答
568 浏览

powershell - 如何正确地将 Get-Childitem 的结果传递到 Scriptblock 中?

在此示例中,我尝试将结果传递Get-ChildItem到脚本块中,但成功有限且结果出乎意料。

C:\temp包含3个文件:

  • 一个.txt
  • B.txt
  • C.txt

我想要的是在这里传递到脚本块,并维护已返回$files的三个文件的整个列表。Get-ChildItem换句话说,我想$files返回脚本块内部和外部的 A.txt、B.txt 和 C.txt。

我能够做到这一点,但我无法可靠地做到这一点,也无法解释原因。我不想依赖“虚拟”变量来使其正常工作,我想了解区别是什么。

这里的第一个示例返回所有文件:

第二个示例仅将 A.txt 传递到脚本块中:

有人可以帮助解释这样做的正确方法吗?

0 投票
1 回答
508 浏览

powershell - PowerShell 测试路径在脚本块中不起作用

我有以下 PowerShell 代码来测试脚本块中是否存在文件:

当我运行它时,我得到以下输出,表明该文件存在于主执行中,但不存在于脚本块中。

有人可以指出在脚本块中测试文件是否存在需要什么吗?

谢谢!

0 投票
0 回答
315 浏览

powershell - PowerShell 隐式远程处理 - 脚本块

我正在尝试使用隐式远程处理。我们在不同的数据中心有一个跳转服务器。我想Invoke-Command在该跳转服务器上隐式运行,以便能够在它可以访问的其他服务器上运行命令。我能够导出Invoke-Command,并导入带有前缀的模块。我遇到的问题是它说它不能将字符串转换为脚本块。

这是一个例子:

我知道我可以使用 PSSession 连接到跳转服务器。我很好奇为什么这不起作用。

这是错误:

无法绑定参数“ScriptBlock”。无法将“System.String”类型的“Write-Host $env:COMPUTERNAME”值转换为“System.Management.Automation.ScriptBlock”类型。