Aracılığıyla paylaş


Select-Object

Nesneleri veya nesne özelliklerini seçer.

Syntax

Select-Object
      [-InputObject <PSObject>]
      [[-Property] <Object[]>]
      [-ExcludeProperty <String[]>]
      [-ExpandProperty <String>]
      [-Unique]
      [-Last <Int32>]
      [-First <Int32>]
      [-Skip <Int32>]
      [-Wait]
      [<CommonParameters>]
Select-Object
      [-InputObject <PSObject>]
      [[-Property] <Object[]>]
      [-ExcludeProperty <String[]>]
      [-ExpandProperty <String>]
      [-Unique]
      [-SkipLast <Int32>]
      [<CommonParameters>]
Select-Object
      [-InputObject <PSObject>]
      [-Unique]
      [-Wait]
      [-Index <Int32[]>]
      [<CommonParameters>]
Select-Object
      [-InputObject <PSObject>]
      [-Unique]
      [-SkipIndex <Int32[]>]
      [<CommonParameters>]

Description

Select-Object Cmdlet, bir 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 Property parametresini kullanın. Özellikleri seçtiğinizde, Select-Object yalnızca belirtilen özelliklere sahip yeni nesneler döndürür.

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

Bir komut işlem hattına First veya Index parametreleriyle bir Select-Object komut eklediğinizde PowerShell, nesneleri oluşturan komut işlem hattında komutun önünde Select-Object görünse bile seçili nesne sayısı oluşturulur oluşturulmaz 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 bilgisayarda almak için cmdlet'ini kullanır Get-Process .

cmdlet'ini Select-Object kullanarak her örneğin modules özelliğinde yer alan bir örnek dizisini System.Diagnostics.Process[System.Diagnostics.ProcessModule] ile Get-Processverir.

cmdlet'in Select-ObjectProperty parametresi işlem adlarını seçer. Bu, her [System.Diagnostics.ProcessModule] örneğe bir ProcessNameNoteProperty 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. cmdlet'i Get-Process bilgisayardaki işlemleri alır. cmdlet'i 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.

Cmdlet'ini içeren Sort-Object komutlarda Wait parametresi 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 nesneleri işlenirken 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 örnekte, bir karakter dizisinden benzersiz karakterler almak için benzersiz parametresiSelect-Object kullanılı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-EventLogWindows 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 etkinin bir örneğini görebilmesi için ilk beş dosyayı görüntüler.

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

waitSelect-Object parametresi, PowerShell'in ilk beş salt okunur metin dosyasını aldıktan sonra cmdlet'i 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), int IComparable.CompareTo(System.Object obj)...
Equals      Method       bool Equals(System.Object obj), bool Equals(int obj), bool IEquatable[int].Equals(int other)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
GetTypeCode Method       System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode()
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 ToString(System.IFormatProvider provider)...
ToType      Method       System.Object IConvertible.ToType(type conversionType, System.IFormatProvider provider)
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: Nesnelerde özel özellikler İçerik Oluşturucu

Aşağıdaki örnekte, herhangi bir nesneye özel özellik ekleme işleminin kullanımı Select-Object 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 özellikleri İçerik Oluşturucu

Bu örnekte girişinize hesaplanan özelliklerin eklenmesi için komutunun Select-Object kullanılması gösterilmektedir. Property parametresine scriptblock geçirilirken geçirilen her nesnede ifadenin değerlendirilmesi ve sonuçların çıkışa eklenmesine 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

Parametreler

-ExcludeProperty

Bu cmdlet'in işlemden hariç tutulduğu özellikleri belirtir. Joker karakterlere izin verilir.

PowerShell 6'da başlayarak, ExcludeProperty'nin çalışması için Özellik parametresinin eklenmesi artık gerekli değildir.

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.

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

Her iki durumda da, Nesne türü çıkışı genişletilmiş özelliğin Türü ile eşleşecektir.

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

Uyarı

Şu hatayı alırsanız: özelliği zaten mevcut olduğundan özelliği <PropertyName> işlenemedi seçeneğini belirleyin, aşağıdakileri göz önünde bulundurun. kullanırken -ExpandPropertySelect-Object mevcut bir özelliğin yerini alamadığını unutmayın. Diğer bir deyişle:

  • Genişletilmiş nesne aynı ada sahip bir özelliğe sahipse bir hata oluşur.
  • Selected nesnesi, Genişletilmiş nesneler özelliğiyle aynı ada sahip bir özelliğe sahipse bir hata oluşur.
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. 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ı aracılığıyla cmdlet'e gönderilecek nesneleri belirtir. Bu parametre nesneleri Select-Objectöğesine yönlendirmenizi sağ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ı 'a 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.

Property parametresinin değeri yeni bir hesaplanan özellik olabilir. Hesaplanmış bir özellik oluşturmak için 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 dizinin veya nesne listesinin başından sayılır, ancak komut Last parametresini kullanıyorsa, listenin veya dizinin sonundan sayılır.

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

-SkipIndex

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

-SkipLast

Listenin veya dizinin sonundan 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ümesinin aynı özelliklere ve değerlere sahip olması durumunda, alt kümenin yalnızca tek bir üyesinin seçileceğini belirtir.

Diğer filtreleme parametreleri uygulandıktan sonra benzersiz değerler seçilir.

Bu parametre büyük/küçük harfe duyarlıdır. Sonuç olarak, yalnızca karakter büyük/küçük harf bakımından 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, bir komut işlem hattında first veya Index parametrelerine sahip bir Select-Object 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

herhangi bir nesneyi öğesine yöneltebilirsiniz Select-Object.

Çıkışlar

PSObject

Notlar

  • Cmdlet'ine Select-Object yerleşik diğer adıyla selectda başvurabilirsiniz. Daha fazla bilgi için bkz. about_Aliases.

  • en iyi duruma getirme özelliği Select-Object yalnızca işlem hattına işlenen nesneleri yazan komutlar için kullanılabilir. İşlenen 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önergeleri bölümünde İşlem Hattına Tek Kayıtlar Yazma.