У меня один сценарий 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?