Selectați-obiect

modul: Microsoft.PowerShell.Utilitate

Selectează obiecte sau proprietăți obiect.

sintaxă

Select-Object >] 
Select-Object >] 

descriere

Select-Object cmdletul Selectează proprietățile specificate ale unui obiect sau set de obiecte. De asemenea, poate selecta obiecte unice, un număr specificat de obiecte sau obiecte într-o poziție specificată în anarray.

pentru a selecta obiecte dintr-o colecție, utilizați parametrii First, Last, Unique, Skip, andIndex. Pentru a selecta proprietăți obiect, utilizați parametrul proprietate. Când selectațiproprietăți,Select-Object returnează obiecte noi care au doar proprietățile specificate.

începând cu Windows PowerShell 3.0,Select-Object include o caracteristică de optimizare care împiedică crearea și procesarea obiectelor care nu sunt utilizate.

când includeți o comandăSelect-Object cu primii parametri sau Index într-o linie de comandă, PowerShell oprește comanda care generează obiectele imediat ce este generat numărul selectat de obiecte, chiar și atunci când comanda care generează obiectele apare înaintea comenziiSelect-Object în conductă. Pentru a dezactiva acest comportament de optimizare, utilizați Waitparameter.

Examples

examples 1: Select objects by property

acest exemplu creează obiecte care au proprietățile Name, ID și ws (ws) ale obiectelor de proces.

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

Exemplul 2: Selectați obiecte după proprietate și formatați rezultatele

acest exemplu primește informații despre modulele utilizate de procesele de pe computer. Acesta utilizeazăGet-Process cmdlet pentru a obține procesul de pe computer.

foloseșteSelect-Object cmdlet pentru a emite o matrice deinstanțe conținute în proprietatea modulelor fiecăreiSystem.Diagnostics.Process instanceoutput deGet-Process.

parametrul de proprietate alSelect-Object cmdletul selectează numele proceselor. Aceasta adaugă oProcessName NoteProperty la fiecare instanță și populesit cu valoarea proprietății ProcessName procesului curent.

în cele din urmă,Format-List cmdlet este folosit pentru a afișa numele și modulele fiecărui proces într-o listă.

Exemplul 3: Selectați procesele care utilizează cea mai mare memorie

acest exemplu obține cele cinci procese care utilizează cea mai mare memorie. Get-Process cmdlet obțineprocesele de pe computer. Sort-Object cmdlet sortează procesele în funcție de memorie(set de lucru) de utilizare, șiSelect-Object cmdlet selectează doar ultimii cinci membri ai theresulting matrice de obiecte.

parametrul de așteptare nu este necesar în comenzile care includSort-Object cmdlet deoareceSort-Object procesează toate obiectele și apoi returnează o colecție. Select-Object optimizareeste disponibil numai pentru comenzile care returnează obiecte individual pe măsură ce sunt procesate.

Exemplul 4: Selectați caractere unice dintr-o matrice

acest exemplu utilizează parametrul unic al Select-Object pentru a obține caractere unice dintr-o matrice de caractere.

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

exemplul 5: Selectați cele mai noi și cele mai vechi evenimente din jurnalul de evenimente

Acest exemplu primește primele (Cele mai noi) și ultimele (cele mai vechi) evenimente din jurnalul de evenimente Windows PowerShell.

Get-EventLog primește toate evenimentele din jurnalul Windows PowerShell și le salvează în variabila$a.Apoi, $a este direcționat către Select-Object cmdlet. ComandaSelect-Object folosește Indexparametrul pentru a selecta evenimente din matricea de evenimente din variabila$a. Indicele primuluieveniment este 0. Indicele ultimului eveniment este numărul de articole din$a minus 1.

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

exemplul 6: Selectați toate, cu excepția primului obiect

acest exemplu creează o nouă PSSession pe fiecare dintre computerele listate în servere.fișiere txt,cu excepția primului.

Select-Object selectează toate, cu excepția primului computer dintr-o listă de nume de computer. Lista calculatoarelor rezultată este setată ca valoare a parametrului ComputerName alNew-PSSession cmdlet.

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

exemplul 7: Redenumiți fișierele și selectați Mai multe pentru a revizui

acest exemplu adaugă un sufix „-ro” la numele de bază ale fișierelor text care au atributul read-only și apoi afișează primele cinci fișiere, astfel încât utilizatorul să poată vedea un eșantion al efectului.

Get-ChildItem utilizează parametrul dinamic ReadOnly pentru a obține fișiere numai în citire. Fișierele rezultatesunt transmise laRename-Item cmdlet, care redenumește fișierul. Acesta utilizează parametrul Passthru deRename-Item pentru a trimite fișierele redenumite laSelect-Object cmdlet, care selectează primele 5 fordisplay.

parametrul de așteptare alSelect-Object împiedică PowerShell să opreascăGet-ChildItemcmdletul după ce primește primele cinci fișiere text numai în citire. Fără acest parametru, numai primulcinci fișiere numai în citire ar fi redenumite.

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

exemplul 8: Demonstrați complexitatea parametrului-ExpandProperty

acest exemplu demonstrează complexitatea parametrului ExpandProperty.

rețineți că ieșirea generată a fost o matrice de instanțe. Instanțele sunt conforme curegulile de formatare standard ale Vizualizării de ieșire. Acest lucru este valabil pentru orice proprietăți extinse. Dacă obiectele scoase din uz au un format standard specific, este posibil ca proprietatea extinsă să nu fie vizibilă.

# Create a custom object to use for the Select-Object example.$object = @{Name="CustomObject";Expand=@(1,2,3,4,5)}# Use the ExpandProperty parameter to Expand the property.$object | Select-Object -ExpandProperty Expand -Property Name12345# 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-MemberTypeName: System.Int32Name 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.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

exemplul 9: Creați proprietăți particularizate pe obiecte

următorul exemplu demonstrează utilizareaSelect-Object pentru a adăuga o proprietate particularizată la orice obiect.Când specificați un nume de proprietate care nu există,Select-Object creează acea proprietate ca o proprietate pe fiecare obiect trecut.

exemplul 10: Creați proprietăți calculate pentru fiecare InputObject

acest exemplu demonstrează utilizareaSelect-Object pentru a adăuga proprietăți calculate la intrare. Passinga ScriptBlock la parametrul de proprietate provoacă Select-Object pentru a evalua expresia oneach obiect trecut și adăugați rezultatele la ieșire. În cadrul ScriptBlock, puteți utiliza$_ variabila de referință obiectul curent în conducta.

în mod implicit, Select-Object va folosi șirul ScriptBlock ca nume al proprietății. Folosind aHashtable, puteți eticheta ieșirea ScriptBlock-ului dvs. ca proprietate personalizată adăugată la eachobject. Puteți adăuga mai multe proprietăți calculate la fiecare obiect trecut la Select-Object.

parametri

-ExcludeProperty

specifică proprietățile pe care acest cmdlet le exclude din operație. Metacaracterele sunt permise.

începând cu PowerShell 6, nu mai este necesar să includeți parametrul de proprietate forExcludeProperty pentru a funcționa.

Tip: String
poziție: numit
valoare implicită: niciunul
acceptă intrarea conductei: false
accepta caractere wildcard: True
-ExpandProperty

specifică o proprietate pentru a selecta, și indică faptul că ar trebui să se facă o încercare de a extinde thatproperty.

  • dacă proprietatea specificată este o matrice, fiecare valoare a matricei este inclusă în ieșire.
  • dacă proprietatea specificată este un obiect, proprietățile obiectelor sunt extinse pentru everyInputObject

în ambele cazuri, tipul de ieșire a obiectelor se va potrivi cu tipul proprietății extinse.

Dacă parametrul de proprietate este specificat,Select-Object va încerca să adauge fiecare selectedproperty ca NoteProperty la fiecare obiect scos.

avertisment

Dacă primiți eroarea: selectați : proprietatea nu poate fi procesată deoarece proprietatea<PropertyName>există deja, luați în considerare următoarele.Rețineți că atunci când utilizați -ExpandPropertySelect-Object nu poate înlocui o proprietate existentă.Aceasta înseamnă:

  • dacă obiectul extins are o proprietate cu același nume, va apărea o eroare.
  • dacă obiectul selectat are o proprietate cu același nume ca o proprietate obiecte extinse, anerror va apărea.
Tip: String
poziție: numit
valoare implicită: nici unul
accept pipeline input: false
Accept wildcard caractere: false
-primul

specifică numărul de obiecte pentru a selecta de la începutul unei matrice de obiecte de intrare.

Tip: Int32
poziție: numit
valoare implicită: niciunul
acceptă intrarea conductei: false
accepta caractere wildcard: false

-index

selectează obiecte dintr-o matrice pe baza valorilor lor index. Introduceți indicii într-o virgulă separatălistă. Indicii dintr-o matrice încep cu 0, unde 0 reprezintă prima valoare și (n-1) reprezintă ultima valoare.

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

Specifies objects to send to the cmdlet through the pipeline. This parameter enables you to pipeobjects to Select-Object.

când treceți obiecte la parametrul InputObject, în loc să utilizați conducta,Select-Object tratează InputObject ca un singur obiect, chiar dacă valoarea este o colecție. Itis recomandat să utilizați conducta atunci când trece colecții la Select-Object.

Tip: PSObject
poziție: numit
valoare implicită: nici unul
accepta intrare conducte: adevărat
accepta caractere wildcard: False
-Last

Specifies the number of objects to select from the end of an array of input objects.

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

Specifies the properties to select. Aceste proprietăți sunt adăugate ca membri NoteProperty la obiectele output. Metacaracterele sunt permise.

valoarea parametrului de proprietate poate fi o nouă proprietate calculată. Pentru a crea o proprietate calculată,utilizați un tabel hash.

cheile valide sunt:

  • nume (sau etichetă) – <string>
  • Expresie – <string> sau<script block>

Pentru mai multe informații, seeabout_calculated_properties.

Tip: obiect
poziție: 0
valoare implicită: nici unul
accepta intrare conducte: False
accepta caractere wildcard: adevărat
-Skip

omite (nu selectează) numărul specificat de articole. În mod implicit, parametrul Skip conteazăde la începutul matricei sau listei de obiecte, dar dacă comanda utilizează ultimul parametru,acesta contează de la sfârșitul listei sau matricei.

spre deosebire de parametrul Index, care începe să numere la 0, parametrul Skip începe la 1.

Tip: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-SkipIndex
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-SkipLast

sare (nu selectează) numărul specificat de elemente de la sfârșitul listei sau matrice. Funcționează înîn același mod ca și utilizarea Skip împreună cu ultimul parametru.

spre deosebire de parametrul Index, care începe să numere la 0, parametrul SkipLast începe la 1.

Tip: Int32
poziție: numit
valoare implicită: niciunul
acceptă intrarea conductei: False
Accept caractere wildcard: False
-Unique

specifică faptul că dacă un subset al obiectelor de intrare are proprietăți și valori identice, va fi selectat doar un singur membru al subsetului.

acest parametru este sensibil la majuscule și minuscule. Ca rezultat, șirurile care diferă numai în carcasa caracterelor suntconsiderate a fi unice.

Tip: SwitchParameter
poziție: numit
valoare implicită: nici unul
accepta intrare conducte: False
accepta caractere wildcard: False
-așteptați

indică faptul că cmdlet-ul dezactivează optimizarea. PowerShell rulează comenzi în ordinea în care acestea apar în conducta de comandă și le permite să genereze toate obiectele. În mod implicit, dacă includeți o comandăSelect-Object cu primii parametri sau Index într-o conductă de comandă, PowerShellstops comanda care generează obiectele imediat ce este generat numărul selectat de obiecte.

acest parametru a fost introdus în Windows PowerShell 3.0.

Tip: SwitchParameter
poziție: numit
valoare implicită: nici unul
accepta conducta de intrare: false
accepta caractere wildcard: False

intrări

PSObject

puteți țeavă orice obiect laSelect-Object.

ieșiri

PSObject

Note

  • De asemenea, puteți consultaSelect-Object cmdletul prin aliasul său încorporat,select. Pentru mai multe informații, consultați about_Aliases.

  • caracteristica de optimizare aSelect-Object este disponibilă numai pentru comenzile care scriu obiecte în conductă pe măsură ce sunt procesate. Nu are niciun efect asupra comenzilor care tamponează obiectele procesate șiscrieți-le ca o colecție. Scrierea obiectelor imediat este cea mai bună practică de proiectare cmdlet. Pentru mai multe informații, consultați scrierea unor înregistrări unice în liniile directoare de dezvoltare încurajate puternic.

  • about_Calculated_Properties
  • grup-obiect
  • Sortare-obiect
  • unde-obiect

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *