Вернуть объект из PowerShell с помощью параметра (параметр «По ссылке»)?

У меня один сценарий PowerShell (2.0) вызывает другой. Я хочу получить обратно не только основной вывод, но и дополнительный объект, который я могу использовать отдельно, например, для отображения итоговой строки в сообщении.

Давайте используем Test2.ps1 в качестве вызываемого сценария:

param([String]$SummaryLine)
$Issues = "Potentially long list of issues"
$SummaryLine = "37 issues found"
$Issues

And Test1 .ps1 в качестве вызывающего его сценария:

$MainOutput = & ".\Test2.ps1" -SummaryLine $SummaryOutput
$MainOutput
$SummaryOutput

Результат прост:

Potentially long list of issues

Хотя параметр $ SummaryLine заполняется Test2, $ SummaryOutput остается неопределенным в Test1.

Определение $ SummaryOutput перед вызовом Test2 не помогает; он просто сохраняет значение, присвоенное перед вызовом Test2.

Я пробовал настроить $ SummaryOutput и $ SummaryLine как [ref] переменные (как, очевидно, можно делать с функциями), но свойство $ SummaryOutput.Value равно $ null после вызова Test2.

Можно ли в PowerShell вернуть значение параметра? Если нет, каковы обходные пути? Непосредственное назначение переменной родительской области в Test2?

7
задан Peter Mortensen 8 February 2016 в 13:51
поделиться