问题标签 [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 回答
20 浏览

javascript - 关于对象/小部件的 javascript 配置以及添加位置的建议

我有很多需要输出的 javascript 配置(我自己需要的配置对象、jquery 对话框设置等)。它们用于表单中的特定字段。

我为此使用了 1 个始终添加的脚本块,但现在决定将一个脚本块添加到我的模板系统的每个字段的部分中,以便生成的 html 中仅包含实际使用的字段的配置。我决定给脚本块一个基本上是部分路径的类,以便我知道在哪里可以准确快速地找到该脚本块。

这是一个好方法吗?我发现这比只包含某些界面小部件、弹出窗口、ajax 请求等所需的所有配置的巨大脚本要好。

它是否会减慢具有许多单独脚本块的页面,这些块中没有功能,只有具有属性的对象。

0 投票
1 回答
595 浏览

variables - PowerShell - 试图在 ScriptBlock 中使用带引号字符串的变量?

我有以下使用 ScriptBlock 的 PowerShell 脚本作业。我正在尝试使用该变量$pw1,但它似乎没有正确使用它。如何在 ScriptBlock 或字符串中使用变量?

0 投票
1 回答
943 浏览

powershell - 如何创建可在 Invoke-Command 命令中使用的脚本块项目

我想在远程机器上运行几行代码,所以我必须使用“Invoke-command”cmdlet 来实现。我要运行的脚本相当长(不仅仅是一个简单的命令,还有一些循环、条件等),因此无法直接复制内联代码。那么任何人都可以教我这样做的语法吗?

你不需要尝试理解上面的代码,我只是想在这里向你展示我试图在远程机器上执行什么样的事情。非常感谢您!

0 投票
2 回答
2223 浏览

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],但是它们看起来都一样——被包装并限制在每行一定的宽度。

请帮帮我,谢谢!

这个东西的全部目的是自动生成一些脚本,并在其他机器上远程执行这些创建的脚本。

0 投票
2 回答
705 浏览

powershell - PowerShell 脚本块内的命令执行顺序

起初我对 PowerShell ScriptBlock 感到很兴奋,但最近我对它在块内执行排序感到困惑。例如:

调用 $test_block.Invoke() 的输出:

输出东西的命令会先运行吗?

0 投票
1 回答
45 浏览

powershell - 有没有办法为运行时模块或脚本块编写帮助文本?

场景的简短说明。

我正在使用New-ModuleCmdLet 制作一个对象。像这样的东西:

我正在使用该方法创建一个对象,因为它是(我所了解的)唯一可以为我提供对象常量基于注释的函数帮助的方法。但是,我想向整个 ScriptBlock 或 Module 添加注释,以便在我这样做时Get-Help $object获得帮助文本。我尝试在 Scriptblock 的开头放置一个基于注释的帮助文本:

它创建对象,但通过 Get-Help 运行它只会给我 Get-Help 的帮助文本。

有没有更好的方法来做到这一点或我想念的东西。还是没有这样的能力?

0 投票
4 回答
21925 浏览

powershell - Powershell - 如何为 Start-Job 预先评估脚本块中的变量

我想在 Powershell 中使用后台作业。

如何在 ScriptBlock 定义时评估变量?

我打印出 $v1 和 $v2 的空值。我怎样才能让它们在(传递给)脚本块中进行评估,然后再传递给后台作业?

0 投票
4 回答
3926 浏览

arrays - 如何编写一个 PowerShell 高级函数,该函数既可以使用管道输入的对象,也可以使用从参数值获取的对象?

我正在编写一个Chunk-Object可以将对象数组分为子数组的函数。例如,如果我将一个数组传递给它@(1, 2, 3, 4, 5)并指定每个块的元素,2那么它将返回 3 个数组@(1, 2)和. 如果用户想要在将每个元素分块为子数组之前对其进行处理,用户也可以提供一个可选参数。现在我的代码是:@(3, 4)@(5)scriptblock

结果是:

如您所见,它适用于管道输入的对象,但不适用于从参数获取的值。如何修改代码以使其在这两种情况下都能正常工作?

0 投票
1 回答
1668 浏览

powershell - Start-Job - 检查脚本块内 robocopy 的 $lastexicode

我正在尝试做一些简单的事情。

我想创建一个 robocopy 作业来启动副本并检查 $lastexitcode。

LOGMESSAGE 是我编写的一个函数,它将记录事件并在出现错误时发送邮件。

不知何故, $lastexitcode 值总是返回到 16 - 即使副本有效。此外,该函数未执行(它在脚本块之外工作)

有人知道我做错了什么吗?

任何帮助,将不胜感激。

谢谢 !

0 投票
1 回答
10773 浏览

string - PowerShell 使用 Start-Process 在脚本块中执行一个函数会用双引号做一些奇怪的事情

我有一个编辑注册表的 PowerShell 脚本,因此它需要以管理员身份运行。为此,我从正在运行的 PowerShell 脚本启动一个新的 PowerShell 进程,并使用其中包含函数的脚本块传入部分注册表项路径。当我在该函数中使用双引号时,PowerShell 会尝试将它们解释为命令,而不是字符串。如果我使用单引号,那么一切正常。

我创建了一个简单的示例 powershell 脚本来重现该问题。这是片段:

所以在新的 PowerShell 进程中,它会首先在脚本块中定义代码,然后调用 Test 方法,它会产生这个错误:

This :术语“This”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

因此,它试图将字符串视为逗号,就好像我刚刚This is a string在脚本的新行中自己键入一样。

如果我换行

该脚本按预期工作并简单地输出字符串This is a string

我注意到的另一个奇怪问题是,如果我不使用变量而只使用:

然后它在单独的行上输出每个单词,如下所示:

一种

细绳

但如果我使用这样的单引号:

然后它按预期在一行上输出整个句子。

有人知道为什么 PowerShell 在这些情况下表现异常吗?

回答

因此,正如 TessellatingHeckler 所提到的,解决方案是将任何双引号括在双引号、单引号中,或者您可以使用括号。

所以在我的例子中,你会改变:

对此:

或这个:

或这个:

如果您想评估字符串中的变量(即查看变量的值),那么您必须使用双双引号方法:

仍然不确定这是错误还是设计使然,但至少我们有一个解决方法,因为这解决了我上面描述的两个问题。