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-Process
verir.
cmdlet'in Select-Object
Property parametresi işlem adlarını seçer. Bu, her [System.Diagnostics.ProcessModule]
örneğe bir ProcessName
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. 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-EventLog
Windows PowerShell günlüğündeki tüm olayları alır ve değişkene $a
kaydeder.
Ardından cmdlet'ine $a
Select-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-Object
her 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 -ExpandProperty
Select-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-Object
geç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
herhangi bir nesneyi öğesine yöneltebilirsiniz Select-Object
.
Çıkışlar
Notlar
Cmdlet'ine
Select-Object
yerleşik diğer adıylaselect
da 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.