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 ','