Çıktı görünümünü değiştirmek için Format komutlarını kullanma


PowerShell, belirli nesneler için özelliklerin nasıl görüntüleneceğini denetlemenize olanak tanıyan bir dizi cmdlet'e sahiptir. Tüm cmdlet'lerin adları Format fiiliyle başlar. Hangi özellikleri göstermek istediğinizi seçmenize izin verirler.

Get-Command -Verb Format -Module Microsoft.PowerShell.Utility
CommandType     Name               Version    Source
-----------     ----               -------    ------
Cmdlet          Format-Custom      6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-Hex         6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-List        6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-Table       6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-Wide        6.1.0.0    Microsoft.PowerShell.Utility

Bu makalede Format-Wide, Format-List ve Format-Table cmdlet'leri açıklanmaktadır.

PowerShell'deki her nesne türünün, görüntülenecek özellikleri seçmediğinizde kullanılan varsayılan özellikleri vardır. Her cmdlet, hangi özelliklerin görüntülenmesini istediğinizi belirtmek için aynı Özellik parametresini kullanır. Format-Wide yalnızca tek bir özelliği gösterdiğinden, Property parametresi yalnızca tek bir değer alır, ancak Format-List ve <'nin özellik parametreleriFormat-Table özellik adlarının bir listesini kabul eder.

Bu örnekte, Get-Process cmdlet'inin varsayılan çıktısı, Internet Explorer'ın iki örneğinin çalıştığını gösteriyor.

Get-Process -Name iexplore

İşlem nesnelerinin varsayılan biçimi burada gösterilen özellikleri görüntüler:

 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
     32    25.52      10.25      13.11   12808   1 iexplore
     52    11.46      26.46       3.55   21748   1 iexplore

Tek öğeli çıktı için Format-Wide'ı kullanma

Format-Wide cmdlet'i varsayılan olarak bir nesnenin yalnızca varsayılan özelliğini görüntüler. Her nesneyle ilişkili bilgiler tek bir sütunda görüntülenir:

Get-Command -Verb Format | Format-Wide
Format-Custom          Format-Hex
Format-List            Format-Table
Format-Wide

Ayrıca varsayılan olmayan bir özellik de belirtebilirsiniz:

Get-Command -Verb Format | Format-Wide -Property Noun
Custom                 Hex
List                   Table
Wide

Sütunla Format Genelinde ekranı kontrol etme

Format-Wide cmdlet'i ile aynı anda yalnızca tek bir özelliği görüntüleyebilirsiniz. Bu, büyük listelerin birden fazla sütunda görüntülenmesinde kullanışlıdır.

Get-Command -Verb Format | Format-Wide -Property Noun -Column 3
Custom                 Hex                  List
Table                  Wide

Liste görünümü için Format-List'i kullanma

Format-List cmdlet'i, her özelliğin ayrı bir satırda etiketlenip görüntülendiği bir liste biçiminde bir nesne görüntüler:

Get-Process -Name iexplore | Format-List
Id      : 12808
Handles : 578
CPU     : 13.140625
SI      : 1
Name    : iexplore

Id      : 21748
Handles : 641
CPU     : 3.59375
SI      : 1
Name    : iexplore

İstediğiniz kadar özellik belirtebilirsiniz:

Get-Process -Name iexplore | Format-List -Property ProcessName,FileVersion,StartTime,Id
ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime   : 10/22/2019 11:23:58 AM
Id          : 12808

ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime   : 10/22/2019 11:23:57 AM
Id          : 21748

Format-List'i joker karakterlerle kullanarak ayrıntılı bilgi alma

Format-List cmdlet'i, Property parametresinin değeri olarak joker karakter kullanmanıza olanak tanır. Bu, ayrıntılı bilgileri görüntülemenizi sağlar. Çoğu zaman nesneler ihtiyacınız olandan daha fazla bilgi içerir; bu nedenle PowerShell varsayılan olarak tüm özellik değerlerini göstermez. Bir nesnenin tüm özelliklerini göstermek için Format-List -Property * komutunu kullanın. Aşağıdaki komut, tek bir işlem için 60'tan fazla satır çıktı üretir:

Get-Process -Name iexplore | Format-List -Property *

Format-List komutu ayrıntıyı göstermek için yararlı olsa da, birçok öğeyi içeren çıktıya genel bir bakış istiyorsanız, daha basit bir tablo görünümü genellikle daha kullanışlıdır.

Tablo çıktısı için Format-Tablo kullanma

Get-Process komutunun çıktısını biçimlendirmek için hiçbir özellik adı belirtilmeden Format-Table cmdlet'ini kullanırsanız, < olmadan elde ettiğiniz çıktının tam olarak aynısını elde edersiniz.Biçim cmdlet'i. PowerShell varsayılan olarak İşlem nesnelerini tablo biçiminde görüntüler.

Get-Service -Name win* | Format-Table
Status   Name               DisplayName
------   ----               -----------
Running  WinDefend          Windows Defender Antivirus Service
Running  WinHttpAutoProx... WinHTTP Web Proxy Auto-Discovery Se...
Running  Winmgmt            Windows Management Instrumentation
Running  WinRM              Windows Remote Management (WS-Manag...

Not

Get-Service yalnızca Windows platformlarında mevcuttur.

Format-Tablo çıktısının iyileştirilmesi

Tablo görünümü birçok bilgiyi görüntülemek için yararlı olsa da, ekranın veriler için çok dar olup olmadığını yorumlamak zor olabilir. Önceki örnekte çıktı kesilmiştir. Format-Table komutunu çalıştırdığınızda AutoSize parametresini belirtirseniz PowerShell, görüntülenen gerçek verilere göre sütun genişliklerini hesaplar. Bu, sütunların okunabilir olmasını sağlar.

Get-Service -Name win* | Format-Table -AutoSize
Status  Name                DisplayName
------  ----                -----------
Running WinDefend           Windows Defender Antivirus Service
Running WinHttpAutoProxySvc WinHTTP Web Proxy Auto-Discovery Service
Running Winmgmt             Windows Management Instrumentation
Running WinRM               Windows Remote Management (WS-Management)

Format-Table cmdlet'i yine de verileri kesebilir, ancak yalnızca ekranın sonunda keser. Son görüntülenenin dışındaki özelliklere, en uzun veri öğesinin doğru şekilde görüntülenmesi için ihtiyaç duydukları boyut kadar boyut verilir.

Get-Service -Name win* |
    Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -AutoSize
Name                 Status StartType DisplayName                               DependentServi
                                                                                ces
----                 ------ --------- -----------                               --------------
WinDefend           Running Automatic Windows Defender Antivirus Service        {}
WinHttpAutoProxySvc Running    Manual WinHTTP Web Proxy Auto-Discovery Service  {NcaSvc, iphl…
Winmgmt             Running Automatic Windows Management Instrumentation        {vmms, TPHKLO…
WinRM               Running Automatic Windows Remote Management (WS-Management) {}

Format-Table komutu, özelliklerin önem sırasına göre listelendiğini varsayar. Cmdlet, başlangıca en yakın özellikleri tam olarak görüntülemeye çalışır. Format-Table komutu tüm özellikleri görüntüleyemiyorsa, bazı sütunları ekrandan kaldırır. Bu davranışı önceki DependentServices özelliği örneğinde görebilirsiniz.

Sütunlarda Format-Tablo çıktısını sarmalama

Sarma parametresini kullanarak, uzun Format-Table verilerinin kendi görüntü sütunu içinde sarılmasını sağlayabilirsiniz. Sarma parametresini kullanmak, Otomatik Boyutlandırma'yı da belirtmezseniz varsayılan ayarları kullanacağından beklediğiniz sonucu vermeyebilir:

Get-Service -Name win* |
    Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -Wrap
Name                 Status StartType DisplayName                               DependentServi
                                                                                ces
----                 ------ --------- -----------                               --------------
WinDefend           Running Automatic Windows Defender Antivirus Service        {}
WinHttpAutoProxySvc Running    Manual WinHTTP Web Proxy Auto-Discovery Service  {NcaSvc,
                                                                                iphlpsvc}
Winmgmt             Running Automatic Windows Management Instrumentation        {vmms,
                                                                                TPHKLOAD,
                                                                                SUService,
                                                                                smstsmgr…}
WinRM               Running Automatic Windows Remote Management (WS-Management) {}

Sarma parametresinin tek başına kullanılması, işlemeyi çok fazla yavaşlatmaz. Ancak, büyük bir dizin yapısının özyinelemeli bir dosya listesini biçimlendirmek için Otomatik Boyutlandırma'nın kullanılması uzun zaman alabilir ve ilk çıktı öğelerini görüntülemeden önce çok fazla bellek kullanabilir.

Sistem yüküyle ilgilenmiyorsanız Otomatik Boyutlandırma, Sarma parametresiyle iyi çalışır. İlk sütunlar, öğeleri tek bir satırda görüntülemek için hâlâ gerektiği kadar genişlik kullanır, ancak gerekirse son sütun sarılır.

Not

Önce en geniş sütunları belirttiğinizde bazı sütunlar görüntülenmeyebilir. En iyi sonuçları elde etmek için önce en küçük veri öğelerini belirtin.

Aşağıdaki örnekte öncelikle en geniş özellikleri belirtiyoruz.

Get-Process -Name iexplore |
    Format-Table -Wrap -AutoSize -Property FileVersion, Path, Name, Id

Sarmalamayla bile son Id sütunu atlanır:

FileVersion                          Path                                                  Nam
                                                                                           e
-----------                          ----                                                  ---
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE iex
                                                                                           plo
                                                                                           re
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files\Internet Explorer\iexplore.exe       iex
                                                                                           plo
                                                                                           re

Tablo çıktısının düzenlenmesi

Tablolu çıktı kontrolüne yönelik bir başka yararlı parametre de GroupBy'dir. Özellikle daha uzun tablo listelerinin karşılaştırılması zor olabilir. GroupBy parametresi çıktıyı bir özellik değerine göre gruplandırır. Örneğin, daha kolay inceleme için hizmetleri StartType'a göre gruplandırabiliriz ve mülk listesinden StartType değerini çıkarabiliriz:

Get-Service -Name win* | Sort-Object StartType | Format-Table -GroupBy StartType
   StartType: Automatic
Status   Name               DisplayName
------   ----               -----------
Running  WinDefend          Windows Defender Antivirus Service
Running  Winmgmt            Windows Management Instrumentation
Running  WinRM              Windows Remote Management (WS-Managem…

   StartType: Manual
Status   Name               DisplayName
------   ----               -----------
Running  WinHttpAutoProxyS… WinHTTP Web Proxy Auto-Discovery Serv…

İlgili makaleler