У вас так всё намешано...
Где-то forma-table, где-то просто "вывод", где-то чтение с хоста.
Get-Srv($param), который в случае двух параметров превратится в массив...
Не выводится, скорее всего, потому, что PS очень хочет вам угодить, пытаясь подстроить вывод. Но не может :)
Я бы предложил хорошенько поработать над структурой, убрать рекурсию и правильно разделить ответственность между функциями
типа
function Show-SrvFolderList($kat_addr) { # Получаем на вход уже готовый путь к серверу
Get-Children -Path $kat_addr | Format-Table Name
}
function Show-FolderAccess($inp_res) { # увидеть список групп, с исключениями
$lol2 = Get-Acl $inp_res
$lol2 = $lol2.Access | Where-Object {
$_.IdentityReference -notlike "*blabla1*" -and
$_.IdentityReference -notlike "*blabla2*" -and
$_.IdentityReference -notlike "*blabla3*" -and
$_.IdentityReference -notlike "*blabla4*" -and
$_.IdentityReference -notlike "*blabla5*"
}
$lol2 | Format-Table
}
$srv_name = Read-Host "Введите сервер"
$kat_addr = '\\' + $srv_name + '\Folder' # На каждом сервере есть определенная папка \Folder, которая подставляется в Get-Children.
do {
Show-SrvFolderList
# После того, как увидели все каталоги, можем выбрать один из них
$inp_res = Read-Host "Введите ресурс или 1"
if ($inp_res -eq '1') { break }
Show-FolderAccess ($kat_addr + '\' + $inp_res)
} while ($true)
Функции переименованы, чтобы было понятно что они делают
Причём они Show, а не Get, потому что на самом деле они ничего не возвращают, а только показывают