Powershell uzunluğu Get-ChildItem çıktısında görünmeyecek

Dec 20 2020

Bu komutu Windows 10 PowerShell'de deniyorum:

Get-ChildItem -Recurse | select FullName,Length,LastAccessTime

Sonuç yalnızca FullName, while içerir LastAccessTimeve Lengthçıktıda eksiktir.

PowerShell ScreenShot

Neyi yanlış yapıyorum?

Yanıtlar

1 AshokPrasath Dec 20 2020 at 23:34

Bu çalışacak:

Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Export-Csv list.csv

3 mklement0 Dec 21 2020 at 01:07

Sorun yalnızca bir görüntü sorunudur:

  • Çıktı nesneler arasındaki yollar uzun ve çünkü FullNamebir 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ız Out-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 -Widthdeğ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 kesmekFullName 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 ( wgiriş, kısaltması width) konsol penceresinin ( [Console]::WindowWidth) eksi 45karakterlere dayandığına dikkat edin FullName; 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 ).aalignmentaleft

    • Bu hashtable tabanlı ( @{ ... }) hesaplanan özellikleri belirtmenin Format-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 .