1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
function Show-Tree {
param(
[string]$Path = ".",
[int]$Depth = 3
)
$Root = Resolve-Path $Path
function Walk {
param(
[string]$P,
[int]$Level,
[string]$Prefix
)
if ($Level -gt $Depth) { return }
$Entries = Get-ChildItem $P | Sort-Object @{Expression = { $_.PSIsContainer }; Descending = $true }, Name
$Count = $Entries.Count
for ($i = 0; $i -lt $Count; $i++) {
$Entry = $Entries[$i]
$IsLast = ($i -eq ($Count - 1))
$Branch = if ($IsLast) { "$([char]0x2570)$([char]0x2500) " } else { "$([char]0x251C)$([char]0x2500) " }
# $Guide = if ($IsLast) { " " } else { "$([char]0x2502) " }
$Marker = if ($Entry.PSIsContainer) { "$([char]0x25B8) " } else { "$([char]0x2022) " }
if ($Entry.PSIsContainer) {
Write-Host "$Prefix" -NoNewline
Write-Host $Branch -NoNewline -ForegroundColor DarkGray
Write-Host $Marker -NoNewline
Write-Host $Entry.Name -ForegroundColor Green
$NextPrefix = if ($IsLast) { "$Prefix " } else { "$Prefix$([char]0x2502) " }
Walk -P $Entry.FullName -Level ($Level + 1) -Prefix $NextPrefix
}
else {
Write-Host "$Prefix" -NoNewline
Write-Host $Branch -NoNewline -ForegroundColor DarkGray
Write-Host $Marker -NoNewline
Write-Host $Entry.Name
}
}
}
Write-Host "$([char]0x256D)$([char]0x2500) " -NoNewline -ForegroundColor DarkGray
Write-Host "Parent Dir: " -NoNewline -ForegroundColor Blue
Write-Host $Root
Write-Host "$([char]0x2502)" -ForegroundColor DarkGray
Walk -P $Root -Level 1 -Prefix ""
}
Export-ModuleMember -Function Show-Tree
|