问题标签 [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 ISE 中脚本块的奇怪问题:将其字符串表示粘贴到记事本中会显示意外字符
我正在尝试创建一个动态脚本块,因此我可以在脚本块中使用变量。
这是我的代码:
在 PowerShell ISE 中运行脚本会产生我期望的结果:
$command 和 $command2 都呈现相同的输出,并且在使用 Get-Member -Verbose 检查时都是有效的脚本块。
我的问题是执行第一行会产生连接错误,其中 $command2 的相同输出工作正常并连接到服务器。
调查这个问题,我发现将 ISE 输出窗口中的两条生成的行复制/粘贴到记事本中会发现问题:
正如您在 JPG 中看到的那样,在“@”符号之后添加了一个奇数字符,这会导致命令失败......
知道为什么会发生这种情况(以及我该如何解决)?!?
citrix - 使用 ScriptBlock 调用命令在本地服务器上工作 - 远程结果集为空
尝试使用以下代码获取 Citrix XenApp 6.5 服务器状态时,在区域数据收集器上本地运行 PowerShell 时返回结果集:
然后在 PowerShell 中执行相同的脚本块,并将计算机名设置为 ZDC 并提供凭据。不抛出异常,结果集为空:
运行 Wireshark 网络数据包捕获不是很有帮助,因为 WinRM 流量负载已加密。
关于为什么脚本块中的命令可以在本地工作,但返回一个空的结果集而不抛出异常的任何想法?
谢谢!ds
powershell - PowerShell ScriptBlock 变量范围
我无法理解ScriptBlock
s 内的范围。我指望某种类似闭包的系统,但我似乎无法让它工作。
我有一个ScriptBlock
需要 aparam
并返回另一个的ScriptBlock
:
为了得到ScriptBlock
我可以调用$sb1
的内部$sb2 = & $sb1 -Message1 "Message1"
。这呼应Message1
,所以我们知道param
是绑定的。
现在我可以调用$sb2
with & $sb2 -Message2 "Message2"
。我本来期望Message1 Message2
的,但它只是写Message2
了。
有什么方法可以访问$Message1
变量吗?我不能使用本地或脚本变量,因为内部脚本块的多个实例具有不同$Message1
的 s。
这是实际 shell 的实际输出:
powershell - PowerShell: Start-Job -scriptblock 多行脚本块?
希望有人可以帮助我弄清楚这是否可能。我有 20 行在 while 循环中扫描日志文件。我需要这与脚本的其余部分并行发生。日志扫描循环将条目传递给 SQLite,其他脚本需要对这些信息采取行动——因此希望并行运行它们。
如果我使用 Job-Start 命令,那么 -SciptBlock 函数似乎只接受一行命令。我有太多命令要通过管道传输,所以我需要在脚本块中运行多行。
我尝试了几种方法,但以下示例给出的错误最少。我还在 Invoke-Command -ScriptBlock 中进行了尝试,就像在第二个示例中一样 - 两种方式都不会接受多行脚本块。
请问我在做什么错?
错误如下:
powershell - Powershell:使用变量在脚本块中引用 $_ 的属性
在上面的例子中,我想通过一个变量名来访问每个对象的属性。但它不能按预期工作。所以在我的情况下,如何制作
在职的?
powershell - 如何控制 PowerShell 脚本块的范围
我有一个用 PowerShell 编写的函数:
并将用作:
但是我发现在脚本块中,变量被函数内的参数$name
覆盖。$name
replace
有没有办法执行脚本块,以便只有变量$_
被添加到脚本块的范围内,而没有别的?
powershell - Powershell 将参数传递给嵌套的 Start-Job
我正在尝试将参数传递给嵌套作业。
此输出显示该命令实际上并未呈现字符串中的参数:
我也尝试在脚本块中添加此参数,结果相同:
更新:
尝试了评论中列出的内容。没有运气,同样的结果。
更新 2 -$using:executepath
我试过了,我得到了这个错误:
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 传递到脚本块中:
有人可以帮助解释这样做的正确方法吗?
powershell - PowerShell 测试路径在脚本块中不起作用
我有以下 PowerShell 代码来测试脚本块中是否存在文件:
当我运行它时,我得到以下输出,表明该文件存在于主执行中,但不存在于脚本块中。
有人可以指出在脚本块中测试文件是否存在需要什么吗?
谢谢!
powershell - PowerShell 隐式远程处理 - 脚本块
我正在尝试使用隐式远程处理。我们在不同的数据中心有一个跳转服务器。我想Invoke-Command
在该跳转服务器上隐式运行,以便能够在它可以访问的其他服务器上运行命令。我能够导出Invoke-Command
,并导入带有前缀的模块。我遇到的问题是它说它不能将字符串转换为脚本块。
这是一个例子:
我知道我可以使用 PSSession 连接到跳转服务器。我很好奇为什么这不起作用。
这是错误:
无法绑定参数“ScriptBlock”。无法将“System.String”类型的“Write-Host $env:COMPUTERNAME”值转换为“System.Management.Automation.ScriptBlock”类型。