Select-Object

Nesneleri veya nesne özelliklerini seçer.

Syntax

Select-Object
      [[-Property] <Object[]>]
      [-InputObject <psobject>]
      [-ExcludeProperty <string[]>]
      [-ExpandProperty <string>]
      [-Unique]
      [-Last <int>]
      [-First <int>]
      [-Skip <int>]
      [-Wait]
      [<CommonParameters>]
Select-Object
      [[-Property] <Object[]>]
      [-InputObject <psobject>]
      [-ExcludeProperty <string[]>]
      [-ExpandProperty <string>]
      [-Unique]
      [-SkipLast <int>]
      [<CommonParameters>]
Select-Object
      [-InputObject <psobject>]
      [-Unique]
      [-Wait]
      [-Index <int[]>]
      [<CommonParameters>]

Description

Cmdlet bir Select-Object nesnenin veya nesne kümesinin belirtilen özelliklerini seçer. Ayrıca benzersiz nesneleri, belirtilen sayıda nesneyi veya bir dizide belirtilen konumdaki nesneleri seçebilir.

Bir koleksiyondaki nesneleri seçmek için First, Last, Unique, Skip ve Index parametrelerini kullanın. Nesne özelliklerini seçmek için Özellik parametresini kullanın. Özellikleri seçtiğinizde, Select-Object yalnızca belirtilen özelliklere sahip yeni nesneler döndürür.

Windows PowerShell 3.0'dan başlayarak, Select-Object komutların kullanılmayan nesneleri oluşturmasını ve işlemesini engelleyen bir iyileştirme özelliği içerir.

Komut işlem hattında First veya Index parametreleriyle kullandığınızda Select-Object PowerShell, seçilen nesne sayısına ulaşıldığında nesneleri oluşturan komutu durdurur. Bu iyileştirme davranışını kapatmak için Wait parametresini kullanın.

Örnekler

Örnek 1: Özelliğe göre nesneleri seçme

Bu örnek, işlem nesnelerinin Ad, Kimlik ve çalışma kümesi (WS) özelliklerine sahip nesneler oluşturur.

Get-Process | Select-Object -Property ProcessName, Id, WS

Örnek 2: Özelliğe göre nesneleri seçme ve sonuçları biçimlendirme

Bu örnek, bilgisayardaki işlemler tarafından kullanılan modüller hakkında bilgi alır. İşlemi bilgisayara almak için cmdlet'ini kullanır Get-Process .

cmdlet'ini Select-Object kullanarak tarafından her System.Diagnostics.Process örneğin Modules özelliğinde yer alan örnek dizisini [System.Diagnostics.ProcessModule] verirGet-Process.

cmdlet'in Select-Object Property parametresi işlem adlarını seçer. Bu, her [System.Diagnostics.ProcessModule] örneğe birProcessName NoteProperty ekler ve geçerli işlemin ProcessName özelliğinin değeriyle doldurur.

Son olarak, Format-List cmdlet bir listedeki her işlemin adını ve modüllerini görüntülemek için kullanılır.

Get-Process Explorer |
    Select-Object -Property ProcessName -ExpandProperty Modules |
    Format-List

ProcessName       : explorer
ModuleName        : explorer.exe
FileName          : C:\WINDOWS\explorer.exe
BaseAddress       : 140697278152704
ModuleMemorySize  : 3919872
EntryPointAddress : 140697278841168
FileVersionInfo   : File:             C:\WINDOWS\explorer.exe
                    InternalName:     explorer
                    OriginalFilename: EXPLORER.EXE.MUI
                    FileVersion:      10.0.17134.1 (WinBuild.160101.0800)
                    FileDescription:  Windows Explorer
                    Product:          Microsoft Windows Operating System
                    ProductVersion:   10.0.17134.1
...

Örnek 3: En fazla belleği kullanan işlemleri seçme

Bu örnek, en çok bellek kullanan beş işlemi alır. Get-Process cmdlet'i bilgisayardaki işlemleri alır. cmdlet, Sort-Object işlemleri bellek (çalışma kümesi) kullanımına göre sıralar ve Select-Object cmdlet sonuçta elde edilen nesne dizisinin yalnızca son beş üyesini seçer.

Wait parametresi, cmdlet'ini Sort-Object içeren komutlarda gerekli değildir çünkü Sort-Object tüm nesneleri işler ve sonra bir koleksiyon döndürür. İyileştirme Select-Object yalnızca işlenirken nesneleri tek tek döndüren komutlar için kullanılabilir.

Get-Process | Sort-Object -Property WS | Select-Object -Last 5

Handles  NPM(K)    PM(K)      WS(K) VS(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
2866     320       33432      45764   203   222.41   1292 svchost
577      17        23676      50516   265    50.58   4388 WINWORD
826      11        75448      76712   188    19.77   3780 Ps
1367     14        73152      88736   216    61.69    676 Ps
1612     44        66080      92780   380   900.59   6132 INFOPATH

Örnek 4: Diziden benzersiz karakterler seçme

Bu örnek, bir karakter dizisinden benzersiz karakterler almak için benzersiz parametresini Select-Object kullanır.

"a","b","c","a","a","a" | Select-Object -Unique

a
b
c

Örnek 5: Diğer parametrelerle '-Unique' kullanma

Benzersiz parametre, diğer Select-Object parametreler uygulandıktan sonra değerleri filtreler. Örneğin, bir dizideki ilk öğe sayısını seçmek için first parametresini kullanırsanız, Benzersiz yalnızca seçilen değerlere uygulanır ve dizinin tamamına uygulanmaz.

"a","a","b","c" | Select-Object -First 2 -Unique

a

Bu örnekte, İlk, dizideki ilk 2 öğe olarak seçer"a","a". Benzersiz öğesine uygulanır "a","a" ve benzersiz değer olarak döndürür a .

Örnek 6: Olay günlüğünde en yeni ve en eski olayları seçme

Bu örnek, Windows PowerShell olay günlüğündeki ilk (en yeni) ve son (en eski) olayları alır.

Get-EventLog , Windows PowerShell günlüğündeki tüm olayları alır ve değişkene $a kaydeder. Ardından cmdlet'ine $aSelect-Object kanal oluşturulur. komutu, Select-Object değişkendeki olay dizisinden olayları seçmek için Index parametresini $a kullanır. İlk olayın dizini 0'dır. Son olayın dizini eksi 1 içindeki $a öğe sayısıdır.

$a = Get-EventLog -LogName "Windows PowerShell"
$a | Select-Object -Index 0, ($A.count - 1)

Örnek 7: İlk nesne dışında tümünü seçme

Bu örnek, ilki dışında Servers.txt dosyalarında listelenen bilgisayarların her birinde yeni bir PSSession oluşturur.

Select-Object bilgisayar adları listesindeki ilk bilgisayar dışında tümünü seçer. Sonuçta elde edilen bilgisayar listesi, cmdlet'in ComputerName parametresinin New-PSSession değeri olarak ayarlanır.

New-PSSession -ComputerName (Get-Content Servers.txt | Select-Object -Skip 1)

Örnek 8: Dosyaları yeniden adlandırın ve gözden geçirmek için birkaç dosya seçin

Bu örnek, salt okunur özniteliğine sahip metin dosyalarının temel adlarına bir "-ro" soneki ekler ve ardından kullanıcının efektin bir örneğini görebilmesi için ilk beş dosyayı görüntüler.

Get-ChildItemsalt okunur dosyaları almak için ReadOnly dinamik parametresini kullanır. Sonuçta elde edilen dosyalar Rename-Item , dosyayı yeniden adlandıran cmdlet'ine aktarılır. Yeniden adlandırılan dosyaları cmdlet'ine Select-Object göndermek için passThru parametresini Rename-Item kullanır ve bu da görüntü için ilk 5'i seçer.

parametresi, Select-Object PowerShell'in ilk beş salt okunur metin dosyasını aldıktan sonra cmdlet'ini durdurmasını Get-ChildItem engeller. Bu parametre olmadan yalnızca ilk beş salt okunur dosya yeniden adlandırılabilir.

Get-ChildItem *.txt -ReadOnly |
    Rename-Item -NewName {$_.BaseName + "-ro.txt"} -PassThru |
    Select-Object -First 5 -Wait

Örnek 9: -ExpandProperty parametresinin karmaşıklıklarını gösterme

Bu örnekte ExpandProperty parametresinin karmaşıklıkları gösterilmektedir.

Oluşturulan çıkışın bir örnek dizisi [System.Int32] olduğunu unutmayın. Örnekler Çıkış Görünümü'nde standart biçimlendirme kurallarına uygundur. Bu, Tüm Genişletilmiş özellikler için geçerlidir. Çıktısı alınan nesneler belirli bir standart biçime sahipse, genişletilmiş özellik görünür olmayabilir.

# Create a custom object to use for the Select-Object example.
$object = [pscustomobject]@{Name="CustomObject";Expand=@(1,2,3,4,5)}
# Use the ExpandProperty parameter to Expand the property.
$object | Select-Object -ExpandProperty Expand -Property Name

1
2
3
4
5

# The output did not contain the Name property, but it was added successfully.
# Use Get-Member to confirm the Name property was added and populated.
$object | Select-Object -ExpandProperty Expand -Property Name | Get-Member

TypeName: System.Int32

Name        MemberType   Definition
----        ----------   ----------
CompareTo   Method       int CompareTo(System.Object value), int CompareTo(int value), ...
Equals      Method       bool Equals(System.Object obj), bool Equals(int obj), bool IEq...
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
GetTypeCode Method       System.TypeCode GetTypeCode(), System.TypeCode IConvertible.Ge...
ToBoolean   Method       bool IConvertible.ToBoolean(System.IFormatProvider provider)
ToByte      Method       byte IConvertible.ToByte(System.IFormatProvider provider)
ToChar      Method       char IConvertible.ToChar(System.IFormatProvider provider)
ToDateTime  Method       datetime IConvertible.ToDateTime(System.IFormatProvider provider)
ToDecimal   Method       decimal IConvertible.ToDecimal(System.IFormatProvider provider)
ToDouble    Method       double IConvertible.ToDouble(System.IFormatProvider provider)
ToInt16     Method       int16 IConvertible.ToInt16(System.IFormatProvider provider)
ToInt32     Method       int IConvertible.ToInt32(System.IFormatProvider provider)
ToInt64     Method       long IConvertible.ToInt64(System.IFormatProvider provider)
ToSByte     Method       sbyte IConvertible.ToSByte(System.IFormatProvider provider)
ToSingle    Method       float IConvertible.ToSingle(System.IFormatProvider provider)
ToString    Method       string ToString(), string ToString(string format), string ToS...
ToType      Method       System.Object IConvertible.ToType(type conversionType, System...
ToUInt16    Method       uint16 IConvertible.ToUInt16(System.IFormatProvider provider)
ToUInt32    Method       uint32 IConvertible.ToUInt32(System.IFormatProvider provider)
ToUInt64    Method       uint64 IConvertible.ToUInt64(System.IFormatProvider provider)
Name        NoteProperty string Name=CustomObject

Örnek 10: Nesneler üzerinde özel özellikler oluşturma

Aşağıdaki örnekte, herhangi bir nesneye özel özellik eklemek için komutunun Select-Object kullanılması gösterilmektedir. Var olmayan bir özellik adı belirttiğinizde, Select-Object geçirilen her nesnede bu özelliği NoteProperty olarak oluşturur.

$customObject = 1 | Select-Object -Property MyCustomProperty
$customObject.MyCustomProperty = "New Custom Property"
$customObject

MyCustomProperty
----------------
New Custom Property

Örnek 11: Her InputObject için hesaplanan özellikler oluşturma

Bu örnekte, girişinize hesaplanan özellikler eklemek için kullanma Select-Object gösterilmektedir. Property parametresine ScriptBlockgeçirilirken geçirilen her nesnede ifadenin değerlendirilmesi ve sonuçların çıkışa eklenmesi neden olurSelect-Object. ScriptBlock içinde değişkenini $_ kullanarak işlem hattındaki geçerli nesneye başvurabilirsiniz.

Varsayılan olarak, Select-Object özelliğin adı olarak ScriptBlock dizesini kullanır. Hashtable kullanarak ScriptBlock'unuzun çıkışını her nesneye eklenen özel bir özellik olarak etiketleyebilirsiniz. öğesine geçirilen Select-Objecther nesneye birden çok hesaplanan özellik ekleyebilirsiniz.

# Create a calculated property called $_.StartTime.DayOfWeek
Get-Process | Select-Object -Property ProcessName,{$_.StartTime.DayOfWeek}

ProcessName  $_.StartTime.DayOfWeek
----         ----------------------
alg                       Wednesday
ati2evxx                  Wednesday
ati2evxx                   Thursday
...

# Add a custom property to calculate the size in KiloBytes of each FileInfo
# object you pass in. Use the pipeline variable to divide each file's length by
# 1 KiloBytes
$size = @{label="Size(KB)";expression={$_.length/1KB}}
# Create an additional calculated property with the number of Days since the
# file was last accessed. You can also shorten the key names to be 'l', and 'e',
# or use Name instead of Label.
$days = @{l="Days";e={((Get-Date) - $_.LastAccessTime).Days}}
# You can also shorten the name of your label key to 'l' and your expression key
# to 'e'.
Get-ChildItem $PSHOME -File | Select-Object Name, $size, $days

Name                        Size(KB)        Days
----                        --------        ----
Certificate.format.ps1xml   12.5244140625   223
Diagnostics.Format.ps1xml   4.955078125     223
DotNetTypes.format.ps1xml   134.9833984375  223

Örnek 12: Hesaplanmış özelliklere sahip karma tablo anahtarlarını seçme

Bu örnek, hesaplanmış özelliklere sahip bir karma tablo nesnesinin anahtar-değer çiftlerini görüntülemek için nasıl kullanabileceğinizi Select-Object gösterir. Her hesaplanmış özellik karma tablosu , anahtarın görünen adı olarak yeni özelliğin etiketini ve bu anahtarın değerini alan bir ifadeyi belirtir.

@{ name = 'a' ; weight = 7 } | Select-Object -Property @(
    @{ label = 'Name' ; expression = { $_.name } }
    @{ label = 'Weight' ; expression = { $_.weight } }
)

Name Weight
---- ------
a         7

Parametreler

-ExcludeProperty

Bu cmdlet'in işlemden hariç tutulduğu özellikleri belirtir. Joker karakterlere izin verilir. Bu parametre yalnızca komut Property parametresini de içerdiğinde geçerlidir.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-ExpandProperty

Seçilecek özelliği belirtir ve bu özelliği genişletmek için bir girişimde bulunulması gerektiğini belirtir. Giriş nesnesi işlem hattında adlı özellik yoksa bir Select-Object hata döndürür.

  • Belirtilen özellik bir diziyse, dizinin her değeri çıkışa eklenir.
  • Belirtilen özellik bir nesneyse, her InputObject için nesne özellikleri genişletilir

Her iki durumda da çıkış nesnelerinin Türü genişletilmiş özelliğin Type değeriyle eşleşir.

Property parametresi belirtilirse, Select-Object seçilen her özelliği çıktısı alınan her nesneye Bir NoteProperty olarak eklemeyi dener.

Uyarı

Bu ada sahip bir özellik zaten var olduğundan bir özelliğin işlenemediğine ilişkin bir hata alırsanız aşağıdakileri göz önünde bulundurun. ExpandPropertySelect-Object kullanılırken mevcut bir özelliğin değiştirilebileceğini unutmayın. Diğer bir deyişle:

  • Genişletilmiş nesne aynı ada sahip bir özelliğe sahipse, komut bir hata döndürür.
  • Selected nesnesi, Genişletilmiş nesnenin özelliğiyle aynı ada sahip bir özelliğe sahipse, komut bir hata döndürür.
Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-First

Giriş nesneleri dizisinin başından seçilebilecek nesne sayısını belirtir.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Index

Dizideki nesneleri dizin değerlerine göre seçer. Dizinleri virgülle ayrılmış bir listeye girin. Bir dizideki dizinler 0 ile başlar; burada 0 ilk değeri ve (n-1) son değeri temsil eder.

Type:Int32[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

İşlem hattı üzerinden cmdlet'e gönderilecek nesneleri belirtir. Bu parametre nesneleri öğesine yöneltmenizi Select-Objectsağlar.

Nesneleri InputObject parametresine geçirdiğinizde, işlem hattını kullanmak yerine, Select-Object değer bir koleksiyon olsa bile InputObject'i tek bir nesne olarak değerlendirir. koleksiyonları'na Select-Objectgeçirirken işlem hattını kullanmanız önerilir.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Last

Giriş nesneleri dizisinin sonundan seçilebilecek nesne sayısını belirtir.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Property

Seçecek özellikleri belirtir. Bu özellikler çıkış nesnelerine NoteProperty üyeleri olarak eklenir. Joker karakterlere izin verilir. Giriş nesnesi adlı özelliğe sahip değilse, yeni NoteProperty değeri olarak $nullayarlanır.

Property parametresinin değeri yeni bir hesaplanmış özellik olabilir. Hesaplanmış özellik oluşturmak için bir karma tablo kullanın.

Geçerli anahtarlar şunlardır:

  • Ad (veya Etiket) - <string>
  • İfade - <string> veya <script block>

Daha fazla bilgi için bkz . about_Calculated_Properties.

Type:Object[]
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Skip

Belirtilen öğe sayısını atlar (seçmez). Varsayılan olarak, Skip parametresi nesne koleksiyonunun başından itibaren sayılır. Komut Last parametresini kullanıyorsa, koleksiyonun sonundan sayar.

0'da saymaya başlayan Index parametresinden farklı olarak Skip parametresi 1'de başlar.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipLast

Liste veya dizinin sonunda belirtilen öğe sayısını atlar (seçmez). Atla'yı Last parametresiyle birlikte kullanmakla aynı şekilde çalışır.

0'da saymaya başlayan Index parametresinden farklı olarak SkipLast parametresi 1'de başlar.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Unique

Giriş nesnelerinin bir alt kümesi aynı özelliklere ve değerlere sahipse, alt kümenin yalnızca tek bir üyesinin seçilmesi gerektiğini belirtir.

Diğer filtreleme parametreleri uygulandıktan sonra benzersiz seçim değerleri.

Bu parametre büyük/küçük harfe duyarlıdır. Sonuç olarak, yalnızca karakter büyük/küçük harfe göre farklılık gösteren dizeler benzersiz olarak kabul edilir.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Wait

Cmdlet'in iyileştirmeyi kapattığını gösterir. PowerShell komutları komut işlem hattında göründükleri sırayla çalıştırır ve tüm nesneleri oluşturmalarına olanak tanır. Varsayılan olarak, komut Select-Object işlem hattına First veya Index parametrelerine sahip bir komut eklerseniz, PowerShell seçilen nesne sayısı oluşturulur oluşturulmaz nesneleri oluşturan komutu durdurur.

Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Girişler

PSObject

Nesneleri bu cmdlet'e yöneltebilirsiniz.

Çıkışlar

PSObject

Bu cmdlet yalnızca seçili özelliklere sahip giriş nesnelerini döndürür.

Notlar

Windows PowerShell için aşağıdaki diğer adları Select-Objectiçerir:

  • select

en iyi duruma getirme özelliği Select-Object yalnızca işlem hattına işlenen nesneleri yazan komutlar için kullanılabilir. Nesneleri arabelleğe alan ve bunları koleksiyon olarak yazan komutlar üzerinde hiçbir etkisi yoktur. Nesneleri hemen yazmak bir cmdlet tasarımı en iyi uygulamasıdır. Daha fazla bilgi için bkz. Kesinlikle Teşvik Edilen Geliştirme Yönergelerinde İşlem Hattına Tek Kayıtlar Yazma.