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ărei
System.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-ChildItem
cmdletul 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
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 |
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 -ExpandProperty
Select-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 |
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 |
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 |
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 |
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 |
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 |
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 |
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
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 |
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 |
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 consulta
Select-Object
cmdletul prin aliasul său încorporat,select
. Pentru mai multe informații, consultați about_Aliases. -
caracteristica de optimizare a
Select-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