selecteert objecten of objecteigenschappen.
syntaxis
Select-Object >]
Select-Object >]
Description
de Select-Object
cmdlet selecteert gespecificeerde eigenschappen van een object of verzameling objecten. Het kan ook unieke objecten selecteren, een bepaald aantal objecten, of objecten in een bepaalde positie in anarray.
om objecten uit een verzameling te selecteren, gebruikt u de parameters First, Last, Unique, Skip, andIndex. Als u objecteigenschappen wilt selecteren, gebruikt u de eigenschap-parameter. Als u Properties selecteert, geeft Select-Object
nieuwe objecten terug die alleen de opgegeven eigenschappen hebben.
beginnend in Windows PowerShell 3.0, bevat Select-Object
een optimalisatiefunctie die voorkomt dat opdrachten objecten maken en verwerken die niet worden gebruikt.
wanneer u een opdracht Select-Object
toevoegt met de eerste of Indexparameters in een commandpipeline, stopt PowerShell de opdracht die de objecten genereert zodra het geselecteerde aantal Objects is gegenereerd, zelfs wanneer de opdracht die de objecten genereert voor de opdrachtSelect-Object
in de pijplijn verschijnt. Om dit optimalisatiegedrag uit te schakelen, gebruik je de Waitparameter.
voorbeelden
Voorbeeld 1: objecten selecteren op eigenschap
dit voorbeeld maakt objecten met de eigenschappen Naam, ID en werkset (ws) van procesobjecten.
Get-Process | Select-Object -Property ProcessName, Id, WS
Voorbeeld 2: objecten selecteren op Eigenschap en de resultaten opmaken
dit voorbeeld krijgt informatie over de modules die worden gebruikt door de processen op de computer. Het gebruiktGet-Process
cmdlet om het proces op de computer te krijgen.
Het gebruikt deSelect-Object
cmdlet om een array vaninstanties uit te voeren zoals opgenomen in de Modules eigenschap van elke
System.Diagnostics.Process
instanceoutput doorGet-Process
.
De eigenschap parameter van de Select-Object
cmdlet selecteert de procesnamen. Dit voegt eenProcessName
NoteProperty toe aan elke instantie en populatesit met de waarde van de ProcessName eigenschap van het huidige proces.
ten slotte wordt Format-List
cmdlet gebruikt om de naam en modules van elk proces in een lijst weer te geven.
Voorbeeld 3: Selecteer processen die het meeste geheugen gebruiken
dit voorbeeld toont de vijf processen die het meeste geheugen gebruiken. DeGet-Process
cmdlet krijgt de processen op de computer. DeSort-Object
cmdlet sorteert de processen volgens geheugengebruik(werkset), en deSelect-Object
cmdlet selecteert alleen de laatste vijf leden van de resulterende array van objecten.
De Wachtparameter is niet vereist in opdrachten die de Sort-Object
cmdlet bevatten omdatSort-Object
alle objecten verwerkt en vervolgens een verzameling retourneert. DeSelect-Object
optimizationis alleen beschikbaar voor commando ‘ s die objecten afzonderlijk retourneren terwijl ze worden verwerkt.
Voorbeeld 4: Selecteer unieke tekens uit een array
dit voorbeeld gebruikt de unieke parameter van Select-Object
om unieke tekens uit een arrayof characters te krijgen.
"a","b","c","a","a","a" | Select-Object -Uniqueabc
Voorbeeld 5: Selecteer nieuwste en oudste gebeurtenissen in het gebeurtenislogboek
dit voorbeeld krijgt de eerste (nieuwste) en laatste (oudste) gebeurtenissen in het gebeurtenislogboek van Windows PowerShell.
Get-EventLog
krijgt alle gebeurtenissen in de Windows PowerShell-log en slaat ze op in de variabele $a
.Vervolgens wordt $a
naar de Select-Object
cmdlet geleid. Het commando Select-Object
gebruikt de Indexparameter om gebeurtenissen te selecteren uit de reeks gebeurtenissen in de variabele $a
. De index van de eerste gebeurtenis is 0. De index van de laatste gebeurtenis is het aantal items in $a
min 1.
$a = Get-EventLog -LogName "Windows PowerShell"$a | Select-Object -Index 0, ($A.count - 1)
Voorbeeld 6: Selecteer alles behalve het eerste object
dit voorbeeld maakt een nieuwe PSSession aan op elk van de computers die op de Servers staan.txt-bestanden,behalve de eerste.
Select-Object
selecteert alle computers behalve de eerste computer in een lijst met computernamen. De resulterende lijst van computers wordt ingesteld als de waarde van de computernaam parameter van de New-PSSession
cmdlet.
New-PSSession -ComputerName (Get-Content Servers.txt | Select-Object -Skip 1)
Voorbeeld 7: bestanden hernoemen en meerdere selecteren om
te bekijken dit voorbeeld voegt een”- ro ” achtervoegsel toe aan de basisnamen van tekstbestanden die de alleen-lezen attribuut hebben en toont vervolgens de eerste vijf bestanden zodat de gebruiker een voorbeeld van het effect kan zien.
Get-ChildItem
gebruikt de dynamische parameter alleen-lezen om alleen-lezen bestanden te verkrijgen. De resulterende bestanden worden doorgesluisd naar de Rename-Item
cmdlet, die het bestand hernoemt. Het gebruikt de Pasthru parameter vanRename-Item
om de hernoemde bestanden naar de Select-Object
cmdlet te sturen, die de eerste 5 selecteert voor display.
De Wachtparameter van Select-Object
voorkomt dat PowerShell de Get-ChildItem
cmdlet stopt nadat het de eerste vijf alleen-lezen tekstbestanden krijgt. Zonder deze parameter zouden alleen de firstfive alleen-lezen bestanden hernoemd worden.
Get-ChildItem *.txt -ReadOnly | Rename-Item -NewName {$_.BaseName + "-ro.txt"} -PassThru | Select-Object -First 5 -Wait
Voorbeeld 8: Demonstreer de fijne kneepjes van de parameter-ExpandProperty
Dit voorbeeld demonstreert de fijne kneepjes van de parameter ExpandProperty.
merk op dat de gegenereerde uitvoer een array was van instances. De instanties voldoen aan standaard opmaakregels van de Uitvoerweergave. Dit geldt voor alle geëxpandeerde eigenschappen. Als de uitgevoerde objecten een specifiek standaardformaat hebben, is de uitgebreide eigenschap mogelijk niet zichtbaar.
# 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
Voorbeeld 9: Maak aangepaste eigenschappen op objecten
het volgende voorbeeld toont het gebruik van Select-Object
om een aangepaste eigenschap aan een object toe te voegen.Wanneer u een eigenschapsnaam opgeeft die niet bestaat, maakt Select-Object
die eigenschap als aNoteProperty op elk doorgegeven object.
voorbeeld 10: create calculated properties for each InputObject
Dit voorbeeld toont het gebruik van Select-Object
om berekende eigenschappen toe te voegen aan uw invoer. Het doorgeven van een scriptblok aan de eigenschap parameter zorgt ervoor dat Select-Object
de expressie van elk doorgegeven object evalueert en de resultaten toevoegt aan de uitvoer. Binnen het ScriptBlock kunt u de variabele$_
gebruiken om het huidige object in de pijplijn te refereren.
standaard gebruikt Select-Object
De ScriptBlock string als de naam van de eigenschap. Met aHashtable kun je de uitvoer van je ScriptBlock labelen als een aangepaste eigenschap die aan elk object is toegevoegd. U kunt meerdere berekende eigenschappen toevoegen aan elk object dat wordt doorgegeven aan Select-Object
.
Parameters
specificeert de eigenschappen die deze cmdlet uitsluit van de bewerking. Wildcards zijn toegestaan.
beginnend in PowerShell 6, is het niet langer nodig om de eigenschap parameter forExcludeProperty op te nemen om te werken.
Type: | String | positie: | Named | standaardwaarde: | geen | Accept pipeline input: | False |
jokertekens accepteren: | True |
geeft aan dat een poging moet worden gedaan om die Property uit te breiden.
- als de opgegeven eigenschap een array is, wordt elke waarde van de array opgenomen in de uitvoer.
- als de opgegeven eigenschap een object is, worden de eigenschappen van objecten uitgebreid voor elkinputobject
In beide gevallen zal het type object dat wordt uitgevoerd overeenkomen met het type van de uitgebreide eigenschap.
als de eigenschap parameter is opgegeven, zal Select-Object
proberen om elke geselecteerde property als een NoteProperty toe te voegen aan elk uitgevoerd object.
waarschuwing
Als u de fout ontvangt: Selecteer : eigenschap kan niet worden verwerkt omdat eigenschap <PropertyName>
al bestaat, overweeg dan het volgende.Merk op dat bij gebruik van -ExpandProperty
Select-Object
een bestaande eigenschap niet kan vervangen.Dit betekent:
- als het uitgevouwen object een eigenschap met dezelfde naam heeft, zal er een fout optreden.
- als het geselecteerde object een eigenschap heeft met dezelfde naam als de eigenschap Expanded objects, zal er een fout optreden.
Type: | String |
Plaats: | Naam |
Standaard waarde: | Geen |
Accepteren pijplijn input: | False |
Accepteren jokertekens: | False |
Hiermee wordt het aantal objecten te selecteren vanaf het begin van een scala van input-objecten.
Type: | Int32 |
Plaats: | Naam |
Standaard waarde: | Geen |
Accepteren pijplijn invoer: | False |
Accepteren wildcard tekens: | False |
Selecteert objecten uit een matrix op basis van hun index waarden. Voer de indexen in een komma-gescheiden lijst. Indexen in een array beginnen met 0, waarbij 0 de eerste waarde voorstelt en (n-1)de laatste waarde.
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
.
wanneer u objecten doorgeeft aan de InputObject parameter, in plaats van de pijplijn te gebruiken, behandeltSelect-Object
het InputObject als een enkel object, zelfs als de waarde een verzameling is. Het wordt aanbevolen dat u de pijplijn gebruikt wanneer u collecties doorgeeft aan Select-Object
.
Type: | PSObject | positie: | Named | standaardwaarde: | geen | Accept pipeline input: | True |
accepteer jokertekens: | 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. Deze eigenschappen worden toegevoegd als NoteProperty leden aan de output objecten. Wildcards zijn toegestaan.
de waarde van de eigenschap parameter kan een nieuwe berekende eigenschap zijn. Gebruik een hash tabel om een berekende eigenschap te maken.
geldige sleutels zijn:
- naam (of Label) –
<string>
- expressie –
<string>
of<script block>
voor meer informatie, zie over_calculated_properties.
Type: | Object | positie: | 0 | standaardwaarde: | geen |
ga pipeline input: | False | accepteer jokertekens: | True |
slaat het opgegeven aantal items over (selecteert niet). Standaard telt de parameter overslaan vanaf het begin van de array of lijst van objecten, maar als het commando de laatste parameter gebruikt,telt het vanaf het einde van de lijst of array.
In tegenstelling tot de indexparameter, die begint te tellen bij 0, begint de Skipparameter bij 1.
Type: | 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 |
slaat het opgegeven aantal items uit het einde van de lijst of array over. Werkt op dezelfde manier als het gebruik van Skip samen met de laatste parameter.
In tegenstelling tot de Indexparameter, die begint te tellen bij 0, begint de SkipLast-parameter bij 1.
Type: | Int32 |
positie: | Named | standaardwaarde: | geen | Accept pipeline input: | False |
jokertekens accepteren: | False |
geeft aan dat als een subset van de invoerobjecten identieke eigenschappen en waarden heeft, slechts een enkel lid van de subset wordt geselecteerd.
Deze parameter is hoofdlettergevoelig. Als gevolg daarvan worden strings die alleen verschillen in karakter behuizing beschouwd als uniek te zijn.
Type: | SwitchParameter | positie: | Named | standaardwaarde: | None | Accept pipeline input: | False |
Accept jokertekens: | False |
geeft aan dat de cmdlet optimalisatie uitschakelt. PowerShell voert commando ‘ s uit in de volgorde waarin ze verschijnen in de commandopijplijn en laat ze alle objecten genereren. Als u standaard een opdrachtSelect-Object
opneemt met de eerste of Indexparameters in een opdrachtpijplijn, stopt PowerShell het commando dat de objecten genereert zodra het geselecteerde aantal objecten is gegenereerd.
Deze parameter is geïntroduceerd in Windows PowerShell 3.0.
Type: | SwitchParameter | positie: | Named | Default value: | None | Accept pipeline input: | False |
jokertekens accepteren: | False |
invoer
PSObject
u kunt elk object doorsluizen naar Select-Object
.
Outputs
PSObject
Notes
-
u kunt ook naar de
Select-Object
cmdlet verwijzen door zijn ingebouwde alias,select
. Zie about_Aliases voor meer informatie. -
De optimalisatiefunctie van
Select-Object
is alleen beschikbaar voor commando ‘ s die objecten naar de pijplijn schrijven terwijl ze worden verwerkt. Het heeft geen effect op commando ‘ s die objecten bufferen en ze als een verzameling schrijven. Het schrijven van objecten onmiddellijk is een cmdlet ontwerp best practice. Voor meer informatie, zie schrijf enkele Records naar de pijplijn inStrongly Encouraged Development Guidelines.
- about_Calculated_Properties
- Groep-Object
- Sorteer-Object
- waar-Object