Заменить в функции вывод в консоль на добавление в строковую переменную
Подскажите, как в функции заменить вывод в консоль на добавление в переменную.
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)
}