问题标签 [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启动作业脚本块未执行
我有一些非常简单的代码,旨在将目录中的每个文件转换为 HTML。我的问题是,虽然为每个文件成功创建了一个作业,但脚本块永远不会运行。
我对powershell相当陌生,并且已经尝试过解决这个问题的方法,但似乎无法弄清楚。
powershell - 在 ScriptBlock 内时,带有 -Credential 的 Enter-PSSession 仍会提示输入凭据
我有一个使用 Enter-PSSession 自动将用户登录到远程 PowerShell 会话的脚本。我使用 New-Object System.Management.Automation.PSCredential 创建 -Credential。如果它不在 ScriptBlock 中,这将非常有用。当我将它放在脚本块中时,它会在尝试连接时提示我输入凭据,但我不知道为什么。
我将如何使它在 ScriptBlock 中工作?
powershell - 如何在没有脚本块的情况下引用整个管道对象
随着 PowerShell V3 的出现,不再需要编写:
...现在可以写得更简洁:
...外壳使用的明显胜利(ahem)。
现在假设我有一个简单的字符串数组,称之为$stuff
. 是否可以减少这种情况:
...以类似于第一个示例的方式,即删除脚本块并引用整个对象,在这种情况下?
powershell - 在 powershell 中获取测试执行的平均 CPU 利用率
上下文:
我想运行一个测试,并在它运行时收集 CPU 利用率。基本上,当我开始测试时,我还想开始收集 CPU 利用率数据,在测试结束时,我还想停止收集 CPU 利用率数据(然后取平均值)。
在 Win7 上使用 PowerShell 3
方法:
在测试开始时,我添加了一个启动后台作业的函数。后台作业执行一个脚本块,该脚本块运行一个“while ($true)”循环,该循环收集平均 CPU 利用率并将其保存到文件中。在测试结束时,我读取文件,平均收集的数据并停止并删除作业。
问题:
对于当前的方法,脚本块并不总是被执行,也没有收集到新数据。如果我多次运行测试,脚本块将被执行(在其中一次运行中) - 我想不出任何相关或这种行为。如果我在测试中的任何地方使用断点,脚本块也总是会被执行。
想不出别的办法。
需要的答案:
1. 为什么脚本块没有被执行?以及如何让它执行?
2. 是否有其他方法可以在测试期间收集资源数据?
请注意,代码已经通过各种尝试和失败运行,不再“漂亮”。
代码:
powershell - 以 IF 语句作为函数参数的脚本块
我有这个脚本文件包含:
我有两个问题: 1. 如果脚本块包含 IF 语句,则执行失败并出现错误,例如“术语 'someofArguments' 未被识别为 cmdlet 的名称......”。
但如果没有 IF 语句,一切正常。那么如何使用 IF 语句发送该脚本块呢?
- 如何避免在带有变量 $true、$false 和主要是 $null 的 $command 中使用反引号?因为没有反引号,它们被翻译为 true、false 和nothing。
谢谢你。
PS:我发现这个主题PowerShell function with parameterized script block和类似的帖子,说将 scriptblock 作为字符串发送,并在函数本身将其转换为 scriptblock 类型。
编辑:我想出了这个解决方案,但它不是很好。有人知道比这样放反引号更简单的解决方案吗?
powershell - 什么时候 ScriptBlock 不是 ScriptBlock?
我并不是说这个问题听起来太可爱了,但这确实是手头的问题。考虑在 $env:PSModulePath 下安装的 PowerShell 模块 Test.psm1 中定义的以下两个函数:
导入模块后,我可以运行同步功能...
...并显示来自 Get-Process 的适当输出。
但是,当我尝试运行异步版本时......
...然后查看其输出...
...它只是将参数引入 Start-Test 函数失败,报告它无法将字符串转换为 ScriptBlock。因此,-Block $using:Block
传递的是字符串而不是 ScriptBlock!
经过一些实验,我确实找到了解决方法。如果我修改 Start-Test 以便 $Block 参数的类型是 [string] 而不是 [ScriptBlock] - 然后将该字符串转换回一个块以提供给 Invoke-Command ...
然后,当我从上面运行相同的命令时,我会获得正确的结果:
在我的初始示例中using
范围是否正常工作(将 ScriptBlock 转换为字符串)?关于它的有限文档(about_Remote_Variables,about_Scopes)提供的指导很少。最终,当 $Block 参数输入为 [ScriptBlock] 时,有没有办法让 Start-Test 工作?
c# - 如何将 ScriptBlocks 合并到托管的 Powershell 环境中
我最近开始探索 powershell 脚本以及 powershell 托管。
在 powershell 命令提示符下,以下行将按我的预期执行。
此脚本输出管道中的“费用” ($_) 以及作为参数传入 scriptBlock ($args) 的“fi”、“fo”和“fum”。
我试图通过使用 System.Management.Automation.Powershell 类来实现同样的结果。
当我尝试这个时:
我的结果数组包含一个空元素(不确定那里发生了什么)。
如果我试试这个:
仅输出“费用”。$args 数组为空。
最后,当我尝试这个时:
我离得最近。流水线的“fee”,以及“fi”、“fo”和“fum”参数都是输出。然而,这样做的问题是,理想情况下,我更愿意将我的参数动态传递给 scriptBlock,而不是将它们连接到脚本块表达式中。
我的问题是如何在托管的 powershell 环境中创建一个脚本块,它既可以访问从中调用它的管道中的数据,也可以接受参数?我只能实现其中之一。我正在使用 .Net 框架的 4.5 版和 System.Management.Automation 程序集的 3 版。
powershell - 在作业之间共享变量
我有一个 powershell 脚本,它应该运行一个后台作业,直到用户决定它应该结束。后台作业是这个脚本块:
如您所见,我试图传入一个布尔值 ( $killSwitch
) 作为While
在用户/调用者完成后停止循环的一种方式。我用以下方式调用它:
我收到一个错误:
无法处理参数“killSwitch”上的参数转换。参数中需要引用类型。
如何通过引用代码块来传递布尔值,以便我可以从作业外部终止 while 循环?可能吗?
sql-server - 使用 Powershell 和脚本块进行远程 Microsoft SQL Server 数据库还原
长期潜伏者,第一次海报。我希望这里有人可以帮我解决一个让我难过的问题。本质上,我正在尝试编写一个 Powershell 脚本,它将多部分 SQL Server 数据库恢复到远程服务器。我已经弄乱了invoke-command
和script-block
功能,以至于我了解如何使用变量和参数......但是我注意到一些非常有趣的行为。
这是我现在的代码:
这会产生如下错误:
System.Data.SqlClient.SqlError: 无法打开备份设备“S:\Landing\testdb1.bak,S:\Landing\testdb2.bak”。操作系统错误 123(文件名、目录名或卷标语法不正确。)。
但是,如果我将相同的路径硬编码到我的脚本块中,它可以工作:
我注意到的另一件有趣的事情是,如果我只有一个文件要恢复,使用第一种方法和变量可以工作:
希望这对某人有意义。我花了几个小时尝试了很多不同的方法来让它工作——但我似乎无法弄清楚。任何帮助或建议表示赞赏。
谢谢!