Powershell:
legível:
(@{Path = '\NAS-ip\home' ; Levels = '2'} |
ForEach-Object {
Get-ChildItem -Path ($_.Path + ((@('\*') * $_.Levels) -join '')) |
Where-Object {$_.PsIsContainer} | Select-Object -ExpandProperty FullName
}) -join ','
One-liner:
(@{Path = '\NAS-ip\home' ; Levels = '2'} | ForEach-Object {Get-ChildItem -Path ($_.Path + ((@('\*') * $_.Levels) -join '')) | Where-Object {$_.PsIsContainer} | Select-Object -ExpandProperty FullName}) -join ','
Compact:
(@{Path = '\NAS-ip\home' ; Levels = '2'} | % {gci ($_.Path + ((@('\*') * $_.Levels) -join '')) | ? {$_.PsIsContainer} | select -Exp FullName}) -join ','
Altere Path e Levels como achar melhor. E eu aconselho você a mudar o separador de , para algo como | , porque vírgula é permitida em nomes de arquivos e pode levar a ambigüidade. Para alterar o separador, edite a última -join ',' para -join '|' .
Bônus: para obter uma lista de subdiretórios em vários caminhos iniciais, separe as hashtabes no início com vírgula:
(@{Path = '\NAS-ip\home' ; Levels = '2'}, @{Path = '\NAS2-ip\somedir' ; Levels = '3'} |
ForEach-Object {
Get-ChildItem -Path ($_.Path + ((@('\*') * $_.Levels) -join '')) |
Where-Object {$_.PsIsContainer} | Select-Object -ExpandProperty FullName
}) -join ','