问题标签 [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.
javascript - 关于对象/小部件的 javascript 配置以及添加位置的建议
我有很多需要输出的 javascript 配置(我自己需要的配置对象、jquery 对话框设置等)。它们用于表单中的特定字段。
我为此使用了 1 个始终添加的脚本块,但现在决定将一个脚本块添加到我的模板系统的每个字段的部分中,以便生成的 html 中仅包含实际使用的字段的配置。我决定给脚本块一个基本上是部分路径的类,以便我知道在哪里可以准确快速地找到该脚本块。
这是一个好方法吗?我发现这比只包含某些界面小部件、弹出窗口、ajax 请求等所需的所有配置的巨大脚本要好。
它是否会减慢具有许多单独脚本块的页面,这些块中没有功能,只有具有属性的对象。
variables - PowerShell - 试图在 ScriptBlock 中使用带引号字符串的变量?
我有以下使用 ScriptBlock 的 PowerShell 脚本作业。我正在尝试使用该变量$pw1
,但它似乎没有正确使用它。如何在 ScriptBlock 或字符串中使用变量?
powershell - 如何创建可在 Invoke-Command 命令中使用的脚本块项目
我想在远程机器上运行几行代码,所以我必须使用“Invoke-command”cmdlet 来实现。我要运行的脚本相当长(不仅仅是一个简单的命令,还有一些循环、条件等),因此无法直接复制内联代码。那么任何人都可以教我这样做的语法吗?
你不需要尝试理解上面的代码,我只是想在这里向你展示我试图在远程机器上执行什么样的事情。非常感谢您!
powershell - PowerShell scriptBlock 在尝试将 scriptblock 写入文件时包装脚本
我正在尝试通过另一个 PowerShell 脚本创建一个 PowerShell 脚本。我有类似的东西:>
AtRunUnattended.exe "$($Dict.Get_Item("MASTER_DIRECTORY_PATH"))\MEDIA_FILE\" /S /noreboot /L logfile="%TEMP%\AT $($Dict.Get_Item("PRODUCT_NAME")) V8.4。日志" altsource="C:\temp\baf\mediafile"
但是,当我有一些像上面显示的那样长的单行脚本时,它会自动包装,因此输出的 .ps1 文件不会像我直接从父脚本调用脚本一样工作。因此,在父 .ps1 脚本创建的 .ps1 文件中,代码如下所示:
如果运行,它将无法正常运行。
那么有人知道如何对脚本块进行文本格式化,以便它们可以正确地写入另一个子脚本文件以供进一步执行吗?我做了一些研究,我认为这可能与 PS 的内部文本缓冲区宽度或其他东西有关。我也尝试了其他输出文件方法,例如 [System.IO.StreamWriter],但是它们看起来都一样——被包装并限制在每行一定的宽度。
请帮帮我,谢谢!
这个东西的全部目的是自动生成一些脚本,并在其他机器上远程执行这些创建的脚本。
powershell - PowerShell 脚本块内的命令执行顺序
起初我对 PowerShell ScriptBlock 感到很兴奋,但最近我对它在块内执行排序感到困惑。例如:
调用 $test_block.Invoke() 的输出:
输出东西的命令会先运行吗?
powershell - 有没有办法为运行时模块或脚本块编写帮助文本?
场景的简短说明。
我正在使用New-Module
CmdLet 制作一个对象。像这样的东西:
我正在使用该方法创建一个对象,因为它是(我所了解的)唯一可以为我提供对象常量基于注释的函数帮助的方法。但是,我想向整个 ScriptBlock 或 Module 添加注释,以便在我这样做时Get-Help $object
获得帮助文本。我尝试在 Scriptblock 的开头放置一个基于注释的帮助文本:
它创建对象,但通过 Get-Help 运行它只会给我 Get-Help 的帮助文本。
有没有更好的方法来做到这一点或我想念的东西。还是没有这样的能力?
powershell - Powershell - 如何为 Start-Job 预先评估脚本块中的变量
我想在 Powershell 中使用后台作业。
如何在 ScriptBlock 定义时评估变量?
我打印出 $v1 和 $v2 的空值。我怎样才能让它们在(传递给)脚本块中进行评估,然后再传递给后台作业?
arrays - 如何编写一个 PowerShell 高级函数,该函数既可以使用管道输入的对象,也可以使用从参数值获取的对象?
我正在编写一个Chunk-Object
可以将对象数组分块为子数组的函数。例如,如果我将一个数组传递给它@(1, 2, 3, 4, 5)
并指定每个块的元素,2
那么它将返回 3 个数组@(1, 2)
和. 如果用户想要在将每个元素分块为子数组之前对其进行处理,用户也可以提供一个可选参数。现在我的代码是:@(3, 4)
@(5)
scriptblock
结果是:
如您所见,它适用于管道输入的对象,但不适用于从参数获取的值。如何修改代码以使其在这两种情况下都能正常工作?
powershell - Start-Job - 检查脚本块内 robocopy 的 $lastexicode
我正在尝试做一些简单的事情。
我想创建一个 robocopy 作业来启动副本并检查 $lastexitcode。
LOGMESSAGE 是我编写的一个函数,它将记录事件并在出现错误时发送邮件。
不知何故, $lastexitcode 值总是返回到 16 - 即使副本有效。此外,该函数未执行(它在脚本块之外工作)
有人知道我做错了什么吗?
任何帮助,将不胜感激。
谢谢 !
string - PowerShell 使用 Start-Process 在脚本块中执行一个函数会用双引号做一些奇怪的事情
我有一个编辑注册表的 PowerShell 脚本,因此它需要以管理员身份运行。为此,我从正在运行的 PowerShell 脚本启动一个新的 PowerShell 进程,并使用其中包含函数的脚本块传入部分注册表项路径。当我在该函数中使用双引号时,PowerShell 会尝试将它们解释为命令,而不是字符串。如果我使用单引号,那么一切正常。
我创建了一个简单的示例 powershell 脚本来重现该问题。这是片段:
所以在新的 PowerShell 进程中,它会首先在脚本块中定义代码,然后调用 Test 方法,它会产生这个错误:
This :术语“This”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。
因此,它试图将字符串视为逗号,就好像我刚刚This is a string
在脚本的新行中自己键入一样。
如果我换行
到
该脚本按预期工作并简单地输出字符串This is a string
。
我注意到的另一个奇怪问题是,如果我不使用变量而只使用:
然后它在单独的行上输出每个单词,如下所示:
这
是
一种
细绳
但如果我使用这样的单引号:
然后它按预期在一行上输出整个句子。
有人知道为什么 PowerShell 在这些情况下表现异常吗?
回答
因此,正如 TessellatingHeckler 所提到的,解决方案是将任何双引号括在双引号、单引号中,或者您可以使用括号。
所以在我的例子中,你会改变:
对此:
或这个:
或这个:
如果您想评估字符串中的变量(即查看变量的值),那么您必须使用双双引号方法:
仍然不确定这是错误还是设计使然,但至少我们有一个解决方法,因为这解决了我上面描述的两个问题。