调用表达式无法执行多行功能

时间:2019-07-10 14:07:18

标签: powershell

我试图通过使用以下命令运行保存在文本文档中的PowerShell脚本:

cat myScript.txt | Invoke-Expression

当每个命令都在自己的行上时它可以工作,但是抛出一个错误,提示我缺少语法:

Invoke-Expression: At line:1 char:14
+ function foo {
+              ~
Missing closing '}' in statement block or type definition.

myScript.txt中的代码如下:

function foo {
    param([int]$a, [int]$b)

    echo "$a + $b"
}
foo 1 2

是否可以在不更改文本文件的情况下运行此脚本,以将所有功能合并为一行?

1 个答案:

答案 0 :(得分:0)

您可以使用Get-Content -Raw,然后将内容添加到脚本块中。

$file = Get-Content myScript.txt -Raw
$scriptBlock = [System.Management.Automation.ScriptBlock]::Create($file)
& $scriptBlock