Powershell uzunluğu Get-ChildItem çıktısında görünmeyecek
Bu komutu Windows 10 PowerShell'de deniyorum:
Get-ChildItem -Recurse | select FullName,Length,LastAccessTime
Sonuç yalnızca FullName
, while içerir LastAccessTime
ve Length
çıktıda eksiktir.
PowerShell ScreenShot
Neyi yanlış yapıyorum?
Yanıtlar
Bu çalışacak:
Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Export-Csv list.csv
Sorun yalnızca bir görüntü sorunudur:
Çıktı nesneler arasındaki yollar uzun ve çünkü
FullName
bir ilk özelliği seçilen, geri kalan özellikleri (sütunlar) yok yazdırmak ekranda sığamaz çünkü. Bununla birlikte, özellikleri olan bu ve programlı kullanılabilir.Not: Amaç, daha sonra programlı işleme için bir dosyaya kaydetmekse ,
>
/ kullanmamalısınızOut-File
, bu da konsolda (terminal) gördüğünüz görüntü için biçimlendirmeyle sonuçlanır , çünkü bu biçimlendirme yalnızca insan gözlemci .- İçin programlı işleme , bir kullanma yapılandırılmış veri formatını CSV gibi gösterildiği gibi, Ashok Prasath cevabı
Çözümler :
Hızlı ve kirli bir çözüm, Doug Maurer'in önerdiği gibi ,
FullName
özelliği en son koymaktır; bu, tüm özelliklerin (sütunların) gösterilmesini sağlar, ancak özellik değerleri kesilir (ile sembolize edilir ) ve özellikle yolların başlangıcından itibaren :FullName
…
# FullName is placed *last* # Caveat: Paths will be truncated at the *end*. Get-ChildItem -Recurse | select Length, LastAccessTime, FullName
Her özellik değerinin, özellik adı ile ön ekli kendi satırında temsil edildiği liste tabanlı bir biçime geçiş yapmak sizin için sorun değilse , boru to Format-List; aşırı uzun değerlerin satır kaydıracağını unutmayın :
Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Format-List
İstediğiniz takdirde tablo çıktı ve umursamıyorum hat-sarma çıktınıza yapmanız boru olabilir Out-Stringbir ile
-Width
değer yeterince büyük (O notu tüm sütunlar sığacak şekilde Out-Filede destekleri-Width
):Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Out-String -Width 300
Eğer yatay kaydırma tercih ederseniz hat ambalaja, bir dosyaya yukarıda kaydedip olabilir onun içinde bir metin editörü açmak gibi bir metin düzenleyicisi ile veya Visual Studio Kanunu yapabilirsiniz doğrudan boru buna çıkışı:
# Opens the output directly in a new Visual Studio Code editor tab. Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Out-String -Width 300 | code -
Aksi takdirde - Görmek istediğiniz takdirde tablo ekrana konsolda içinde, belirtilen tam sütun sırayla ve hat-sarma olmadan - tek seçenek olduğunu kesmek
FullName
değerleri tüm sütunlar sığabilecek şekilde; kısaltmak adına,select
( Select-Object) çağrısını doğrudan kullanım lehine atladığımı unutmayın Format-Table:Get-ChildItem -Recurse | Format-Table @{ e='FullName'; w=[Console]::WindowWidth-45; a='right'}, Length, LastAccessTime
Sütun genişliğinin (
w
giriş, kısaltmasıwidth
) konsol penceresinin ([Console]::WindowWidth
) eksi45
karakterlere dayandığına dikkat edinFullName
; bu, diğer iki sütun için yer bırakırken değerlerin mümkün olduğunca çoğunu gösterir ; ayrıca, kesmenin (ile simgelenen yolun başlangıcına…
uygulandığından - böylece dosya / dizin adı her zaman görüntülenecek şekilde) emin olmak için sütun sağa hizalanır ( giriş yoluyla , kısaltması ); sonun kesilmesini tercih ederseniz yolun, ihmal girişi (o varsayılan için ).a
alignment
a
left
Bu hashtable tabanlı (
@{ ... }
) hesaplanan özellikleri belirtmeninFormat-Table
, aynı zamanda sola hizalamayı korurken baştan kesmenin bir yolu da dahil olmak üzere, daha fazla bilgi için , bu yanıta bakın .