Invoke-Expression не может выполнять многострочные функции - PullRequest
0 голосов
/ 10 июля 2019

Я пытался запустить скрипт 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 голосов
/ 10 июля 2019

Вы можете использовать Get-Content -Raw, а затем добавить содержимое в блок скриптов.

$file = Get-Content myScript.txt -Raw
$scriptBlock = [System.Management.Automation.ScriptBlock]::Create($file)
& $scriptBlock
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...