Tente usar o Show-Tree .
09:17 $ Show-Tree C:\Chocolatey\ -Depth 1
C:\Chocolatey\
|--bin
\--lib
A seguinte entrada:
PS STG:\> Get-ChildItem | tree
Me dá
Folder PATH listing for volume Data
Volume serial number is 6576-C540
D:.
ÃÄÄÄAPK
ÃÄÄÄAssets
³ ÃÄÄÄAnimations
³ ³ ÃÄÄÄCharacters
³ ³ ³ ÀÄÄÄinhabitant
³ ³ ÃÄÄÄEnvironment
³ ³ ÀÄÄÄProps
³ ÃÄÄÄMaterials
³ ³ ÃÄÄÄCharacters
³ ³ ³ ÀÄÄÄinhabitant
³ ³ ÃÄÄÄEnvironment
³ ³ ÃÄÄÄParticles
³ ³ ³ ÀÄÄÄasteroidParticle
³ ³ ÀÄÄÄProps
³ ÃÄÄÄMeshes
³ ³ ÃÄÄÄCharacters
³ ³ ³ ÀÄÄÄinhabitant
³ ³ ÃÄÄÄEnvironment
³ ³ ÀÄÄÄProps
... etc.
Quando eu esperava algo mais formatado como:
├───APK
├───Assets
└───Animations
| └───Characters
| | └───inhabitant
| ├───Environment
| └───Props
└───Materials
| └───Characters
| | └───inhabitant
| ├───Environment
| └───Particles
| | └───asteroidParticle
| └───Props
└───Meshes
└───Characters
| └───inhabitant
├───Environment
└───Props
O que estou fazendo / entendendo errado?
Este é o valor de $OutputEncoding
:
IsSingleByte : True
BodyName : iso-8859-1
EncodingName : Western European (Windows)
HeaderName : Windows-1252
WebName : Windows-1252
WindowsCodePage : 1252
IsBrowserDisplay : True
IsBrowserSave : True
IsMailNewsDisplay : True
IsMailNewsSave : True
EncoderFallback : System.Text.InternalEncoderBestFitFallback
DecoderFallback : System.Text.InternalDecoderBestFitFallback
IsReadOnly : True
CodePage : 1252'
Tente usar o Show-Tree .
09:17 $ Show-Tree C:\Chocolatey\ -Depth 1
C:\Chocolatey\
|--bin
\--lib
Dependendo da versão do PowerShell e da presença ou ausência de extensões da comunidade, você pode acabar chamando C: \ Windows \ System32 \ tree.com. A ininteligível é porque o PowerShell não está usando a codificação correta para exibir os caracteres estendidos que o tree.com usa por padrão. Você pode usar o chcp.com para ver qual é a configuração atual da página de códigos do processador de comandos. O padrão usual é a página de códigos 437. O PowerShell usa a página de códigos 1252 por padrão. Existem opções para lidar com isso que funcionam bem e são de baixo impacto e simples.
tree | %{ [System.Text.Encoding]::GetEncoding('IBM437').GetString($OutputEncoding.GetBytes($_)) }
Você está executando o comando no Powershell ou Powershell ISE?
Há uma diferença.
Isso é o que eu recebo no Powershell ISE:
PS C:\powershell> Get-ChildItem | tree
Folder PATH listing
Volume serial number is XXXX-XXXX
C:.
ÃÄÄÄFolder 1
³ ÃÄÄÄSubfolder 1
³ ÃÄÄÄSubfolder 2
³ ÃÄÄÄSubfolder 3
³ ÀÄÄÄSubfolder 4
ÃÄÄÄFolder 2
³ ÃÄÄÄSubfolder 1
³ ÃÄÄÄSubfolder 2
³ ÃÄÄÄSubfolder 3
³ ÀÄÄÄSubfolder 4
ÃÄÄÄFolder 3
³ ÃÄÄÄSubfolder 1
³ ÃÄÄÄSubfolder 2
³ ÃÄÄÄSubfolder 3
³ ÀÄÄÄSubfolder 4
ÀÄÄÄFolder 4
ÃÄÄÄSubfolder 1
ÃÄÄÄSubfolder 2
ÃÄÄÄSubfolder 3
ÀÄÄÄSubfolder 4
PS C:\powershell>
Isso é o que eu recebo no Powershell:
PS C:\powershell> Get-childitem | tree
Folder PATH listing
Volume serial number is XXXX-XXXX
C:.
+---Folder 1
¦ +---Subfolder 1
¦ +---Subfolder 2
¦ +---Subfolder 3
¦ +---Subfolder 4
+---Folder 2
¦ +---Subfolder 1
¦ +---Subfolder 2
¦ +---Subfolder 3
¦ +---Subfolder 4
+---Folder 3
¦ +---Subfolder 1
¦ +---Subfolder 2
¦ +---Subfolder 3
¦ +---Subfolder 4
+---Folder 4
+---Subfolder 1
+---Subfolder 2
+---Subfolder 3
+---Subfolder 4
PS C:\powershell>
Tags powershell powershell-4.0