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 varje
System.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-Object
fö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
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 |
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 -ExpandProperty
Select-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 |
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 |
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 |
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 |
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. 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 |
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 |
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
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 |
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 |
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 till
Select-Object
cmdlet 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