Заменить в функции вывод в консоль на добавление в строковую переменную

Подскажите, как в функции заменить вывод в консоль на добавление в переменную.

 Function Get-OUNesting ([string]$identity, [int]$level, [bool]$lastOuOfTheLevel){
$OU = $null
$OU = Get-ADObject -SearchBase $identity -Filter * -SearchScope Base
if ($lastOUAtALevelFlags.Count -le $level){
    $lastOUAtALevelFlags = $lastOUAtALevelFlags + 0
}
if ($OU -ne $null){
    for ($i = 0; $i -lt $level - 1; $i++){
    if ($lastOUAtALevelFlags[$i] -ne 0){

        Write-Host -NoNewline "  "

    } else {

        Write-Host -NoNewline "│ "
    }
}
if ($level -ne 0){
    if ($lastOUOfTheLevel){

        Write-Host -NoNewline "└─"

    } else { 

        Write-Host -NoNewline "├─"
    }
}
Write-Host $($OU.Name)

}

$subOUs = Get-ADObject -SearchBase $OU.distinguishedName -SearchScope OneLevel -Filter {objectClass -eq "organizationalUnit"} | Select-Object -ExpandProperty distinguishedName
$subOUCount = $subOUs.count
if ($SubOUCount -gt 0){
    $maxMemberOULevel = 0
    $count = 0
    ForEach ($ouDN in $subOUs){
        $count++
        $lastOUOfThisLevel = $false
        if($count -eq $subOUCount){
            $lastOUOfThisLevel = $true
            #$lastOUAtALevelFlags[$level] = 1
        }
        Get-OUNesting -Identity $ouDN -Level $($level+1) -lastOUOfTheLevel $lastOUOfThisLevel
    }
    $level = $maxMemberOULevel
}

Если делать $OUlistST += "├─" , то выходит примерно такое:

│ └─Vip_2

│ └─VIP_adm

├─VIP

├─Users

├─Block

└─Уволенные сотрудники

Staff

А корректный вывод выглядит вот так:

Staff ├─VIP │ └─VIP_adm │ └─Vip_2 ├─Users ├─Block └─Уволенные сотрудники


Ответы (1 шт):

Автор решения: s.elagin

Нашёл способ. Создал глобальную переменную. Отрывок кода:

if ($OU -ne $null){
    for ($i = 0; $i -lt $level - 1; $i++){
    if ($lastOUAtALevelFlags[$i] -ne 0){
        $sub += "  "
        #Write-Host -ForegroundColor $TreeColour -NoNewline "  "
        
    } else {
        $sub += "│ "
        #Write-Host -ForegroundColor $TreeColour -NoNewline "│ "
        
    }
}
if ($level -ne 0){
    if ($lastOUOfTheLevel){
        #Write-Host -ForegroundColor $TreeColour -NoNewline "└─"
        $sub += "└─"
    } else { 
        #Write-Host -ForegroundColor $TreeColour -NoNewline "├─"
        $sub += "├─"
    }
}
Write-Host -ForegroundColor $TreeColour $($OU.Name)
$global:listou += "{0}{1}" -f $sub, $($OU.Name)
}
→ Ссылка