Välj-objekt

modul: Microsoft.PowerShell.Verktyget

väljer objekt eller objektegenskaper.

Syntax

Select-Object >] 
Select-Object >] 

beskrivning

Select-Object cmdlet väljer specificerade egenskaper för ett objekt eller en uppsättning objekt. Det kan ocksåvälj unika objekt, ett visst antal objekt eller objekt i en viss position i anarray.

om du vill välja objekt från en samling använder du parametrarna First, Last, Unique, Skip andIndex. För att välja objektegenskaper, använd Egenskapsparametern. När du väljeregenskaper,Select-Object returnerar nya objekt som bara har de angivna egenskaperna.

börjar i Windows PowerShell 3.0,Select-Object innehåller en optimeringsfunktion som förhindrarkommandon från att skapa och bearbeta objekt som inte används.

När du inkluderar ettSelect-Object – kommando med de första eller Indexparametrarna i en kommandopipeline, stoppar PowerShell kommandot som genererar objekten så snart det valda antalet objekt genereras, även när kommandot som genererar objekten visas före kommandotSelect-Object I rörledningen. För att stänga av detta optimeringsbeteende, använd Väntparametern.

exempel

exempel 1: Välj objekt efter egenskap

detta exempel skapar objekt som har egenskaperna Namn, ID och arbetsuppsättning (ws) förprocessobjekt.

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

exempel 2: Välj objekt efter egenskap och formatera resultaten

det här exemplet får information om modulerna som används av processerna på datorn. Den använderGet-Process cmdlet för att få processen på datorn.

den använderSelect-Object cmdlet för att mata ut en matris medinstanser som finns i Module-egenskapen för varjeSystem.Diagnostics.Process instanceoutput medGet-Process.

Egenskapsparametern för Select-Object cmdlet väljer processnamnen. Detta lägger till enProcessName NoteProperty till varje instans och populatesit med värdet av den aktuella processens processnamnegenskap.

slutligen användsFormat-List cmdlet för att visa namn och moduler för varje process i en lista.

exempel 3: Välj processer som använder mest minne

detta exempel får de fem processer som använder mest minne. Get-Process cmdlet getprocesserna på datorn. Sort-Object cmdlet sorterar processerna enligt minne(arbetsuppsättning) användning, och Select-Object cmdlet väljer endast de sista fem medlemmarna i den resulterande arrayen av objekt.

vänta parametern krävs inte i kommandon som innehåller Sort-Object cmdlet eftersomSort-Object bearbetar alla objekt och returnerar sedan en samling. Select-Object optimeringär endast tillgänglig för kommandon som returnerar objekt individuellt när de bearbetas.

exempel 4: Välj unika tecken från en array

i det här exemplet används den unika parameternSelect-Object för att få unika tecken från en arrayof-tecken.

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

exempel 5: Välj nyaste och äldsta händelser i händelseloggen

detta exempel får de första (nyaste) och sista (äldsta) händelserna i Windows PowerShell händelseloggen.

Get-EventLog hämtar alla händelser i Windows PowerShell-loggen och sparar dem i $a variabel.Därefter leds $a till Select-Object cmdlet. KommandotSelect-Object använder Indexparametern för att välja händelser från händelsemängden i variabeln$a. Indexet för den förstahändelsen är 0. Indexet för den sista händelsen är antalet objekt i $a minus 1.

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

exempel 6: Markera alla utom det första objektet

detta exempel skapar en ny PSSession på var och en av de datorer som listas i servrarna.txt-filer,förutom den första.

Select-Object markerar alla utom den första datorn i en lista med datornamn. Den resulterande listof-datorer är inställd som värdet för Datornamnsparametern för New-PSSession cmdlet.

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

exempel 7: Byt namn på filer och välj flera för att granska

detta exempel lägger till ett ”-ro”-suffix till basnamnen på textfiler som har skrivskyddat attributeoch visar sedan de första fem filerna så att användaren kan se ett exempel på effekten.

Get-ChildItem använder den ReadOnly dynamiska parametern för att få skrivskyddade filer. De resulterande filernaled till Rename-Item cmdlet, som byter namn på filen. Den använder PassThru-parametern förRename-Item för att skicka de döpta filerna till Select-Object cmdlet, som väljer de första 5 fordisplay.

vänteparametern för Select-Objectförhindrar PowerShell från att stoppaGet-ChildItem cmdlet efter att den fått de första fem skrivskyddade textfilerna. Utan denna parameter skulle endast de förstafem skrivskyddade filerna döpas om.

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

exempel 8: Demonstrera komplexiteten i parametern-ExpandProperty

detta exempel visar komplexiteten i parametern ExpandProperty.

Observera att den genererade utmatningen var en matris med instanser. Instanserna överensstämmer medstandardformateringsregler för Utdatavyn. Detta gäller för alla utökade egenskaper. Om theoutputtade objekt har ett specifikt standardformat kanske den utökade egenskapen inte är synlig.

# 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

exempel 9: Skapa anpassade egenskaper på objekt

följande exempel visar att du använder Select-Object för att lägga till en anpassad egenskap till ett objekt.När du anger ett egenskapsnamn som inte finns,Select-Object skapar egenskapen som aNoteProperty på varje objekt passerade.

exempel 10: skapa beräknade egenskaper för varje InputObject

detta exempel visar att du använderSelect-Object för att lägga till beräknade egenskaper i din inmatning. Passinga ScriptBlock till Egenskapsparametern orsakar Select-Object för att utvärdera uttrycket oneach objekt passerade och lägga till resultaten till utgången. Inom ScriptBlock kan du använda$_ variabel för att referera till det aktuella objektet i rörledningen.

som standard kommerSelect-Object att använda ScriptBlock-strängen som namnet på egenskapen. Med aHashtable kan du märka utmatningen från ditt ScriptBlock som en anpassad egenskap som läggs till i eachobject. Du kan lägga till flera beräknade egenskaper för varje objekt som skickas till Select-Object.

parametrar

– ExcludeProperty

anger de egenskaper som denna cmdlet utesluter från operationen. Jokertecken är tillåtna.

Från och med PowerShell 6 är det inte längre nödvändigt att inkludera Egenskapsparametern forExcludeProperty för att fungera.

Typ: sträng
Position: namngiven
standardvärde: ingen
Acceptera pipelineinmatning: False
Acceptera jokertecken: True
-ExpandProperty

anger en egenskap som ska väljas och indikerar att ett försök ska göras för att expandera thatproperty.

  • Om den angivna egenskapen är en matris ingår varje värde i matrisen i utmatningen.
  • om den angivna egenskapen är ett objekt utökas objektegenskaperna för everyInputObject

i båda fallen matchar typen av objekt som matas ut typen av den utvidgade egenskapen.

om Egenskapsparametern anges kommer Select-Object att försöka lägga till varje selectedproperty som en NoteProperty till varje utmatat objekt.

Varning

Om du får felet: Välj : egenskapen kan inte behandlas eftersom egenskapen<PropertyName>redan finns, tänk på följande.Observera att när du använder -ExpandPropertySelect-Object kan inte ersätta en befintlig egenskap.Detta betyder:

  • Om det expanderade objektet har en egenskap med samma namn kommer ett fel att uppstå.
  • om det markerade objektet har en egenskap med samma namn som en utökad objektegenskap kommer anerror att inträffa.
Typ: sträng
Position: namngiven
standardvärde: ingen
Acceptera pipeline input: False
Acceptera jokertecken: False
-först

anger antalet objekt som ska väljas från början av en rad inmatningsobjekt.

Typ: Int32
Position: namngiven
standardvärde: ingen
Acceptera pipelineinmatning: false
Acceptera jokertecken: False
-index

väljer objekt från en matris baserat på deras indexvärden. Ange indexen i ett kommasepareratlista. Index i en matris börjar med 0, där 0 representerar det första värdet och (n-1) representerar thelast-värdet.

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.

När du skickar objekt till InputObject-parametern, istället för att använda rörledningen,Select-Object behandlar InputObject som ett enda objekt, även om värdet är en samling. Det rekommenderas att du använder rörledningen när du skickar samlingar till Select-Object.

Typ: PSObject
Position: namngiven
standardvärde: ingen
Acceptera pipelineinmatning: true
Acceptera jokertecken: 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. Dessa egenskaper läggs till som NoteProperty medlemmar till theoutput objekt. Jokertecken är tillåtna.

värdet på Egenskapsparametern kan vara en ny beräknad egenskap. För att skapa en beräknad egenskap,använd en hashtabell.

giltiga nycklar är:

  • namn (eller etikett) – <string>
  • Expression – <string> eller <script block>

För mer information, seeabout_calculated_properties.

Typ: objekt
Position: 0
standardvärde: ingen
Acceptera pipelineinmatning: falskt
Acceptera jokertecken: True
-hoppa över

hoppar över (väljer inte) det angivna antalet objekt. Som standard räknas Hoppparameternfrån början av matrisen eller listan över objekt, men om kommandot använder den sista parametern räknas den från slutet av listan eller matrisen.

Till skillnad från Indexparametern, som börjar räkna vid 0, börjar Skip-parametern vid 1.

Typ: 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

hoppar (väljer inte) det angivna antalet objekt från slutet av listan eller arrayen. Fungerar på samma sätt som att använda Skip tillsammans med sista parametern.

Till skillnad från Indexparametern, som börjar räkna vid 0, börjar skiplast-parametern vid 1.

Typ: Int32
Position: namngiven
standardvärde: ingen
Acceptera pipelineinmatning: False
Acceptera jokertecken: False
-unik

anger att om en delmängd av inmatningsobjekten har identiska egenskaper och värden, kommer endast en enskild medlem av delmängden att väljas.

denna parameter är skiftlägeskänslig. Som ett resultat är strängar som endast skiljer sig åt i teckenhöljetanses vara unika.

Typ: SwitchParameter
Position: namngiven
standardvärde: ingen
Acceptera pipelineinmatning: falskt
Acceptera jokertecken: falskt
-vänta

indikerar att cmdlet stänger av optimering. PowerShell kör kommandon i den ordning som devisas i kommandopipelinen och låter dem generera alla objekt. Som standard, om du inkluderar ettSelect-Object kommando med de första eller Indexparametrarna i en kommandopipeline, Powershellstoppar kommandot som genererar objekten så snart det valda antalet objekt genereras.

denna parameter introducerades i Windows PowerShell 3.0.

Typ: SwitchParameter
Position: namngiven
standardvärde: ingen
Acceptera pipelineinmatning: falskt
Acceptera jokertecken: False

ingångar

PSObject

Du kan pipa ett objekt tillSelect-Object.

utgångar

PSObject

anteckningar

  • Du kan också referera tillSelect-Objectcmdlet med dess inbyggda alias,select. För mer information, se about_Aliases.

  • optimeringsfunktionen för Select-Object är endast tillgänglig för kommandon som skriver objekt tillrörledningen när de bearbetas. Det har ingen effekt på kommandon som buffrar bearbetade objekt ochskriv dem som en samling. Skriva objekt omedelbart är en cmdlet design bästa praxis. För mer information, se Skriv enstaka poster till rörledningen i starkt uppmuntrade Utvecklingsriktlinjer.

  • about_Calculated_Properties
  • grupp-objekt
  • Sortera-objekt
  • var-objekt

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *