wybiera obiekty lub właściwości obiektu.
składnia
Select-Object >]
Select-Object >]
opis
polecenie cmdletSelect-Object
wybiera określone właściwości obiektu lub zestawu obiektów. Może również wybierać unikalne obiekty, określoną liczbę obiektów lub obiekty w określonej pozycji w obrazie.
aby zaznaczyć obiekty z kolekcji, użyj parametrów First, Last, Unique, Skip iindex. Aby wybrać Właściwości obiektu, użyj parametru właściwości. Po wybraniu właściwości, Select-Object
zwraca nowe obiekty, które mają tylko określone właściwości.
począwszy od Windows PowerShell 3.0, Select-Object
zawiera funkcję optymalizacji, która zapobiega tworzeniu i przetwarzaniu obiektów, które nie są używane.
Po dołączeniu poleceniaSelect-Object
z pierwszymi parametrami lub indeksami w linii poleceń, PowerShell zatrzymuje polecenie generujące obiekty, gdy tylko zostanie wygenerowana wybrana liczba obiektów, nawet jeśli polecenie generujące obiekty pojawi się przed poleceniemSelect-Object
w potoku. Aby wyłączyć tę optymalizację, użyj Waitparameter.
przykłady
przykład 1: Zaznaczanie obiektów według właściwości
Ten przykład tworzy obiekty, które posiadają właściwości Name, ID i working set (ws) obiektów procesowych.
Get-Process | Select-Object -Property ProcessName, Id, WS
przykład 2: wybrać obiekty według właściwości i sformatować wyniki
Ten przykład pobiera informacje o modułach używanych przez procesy na komputerze. Używa poleceniaGet-Process
, aby uzyskać Proces na komputerze.
używa poleceniaSelect-Object
do wyprowadzenia tablicyinstancji zawartych we właściwości Modules każdego
System.Diagnostics.Process
instanceoutput przezGet-Process
.
parametr właściwości polecenia Select-Object
wybiera nazwy procesów. Dodaje To notatkęProcessName
do każdej instancji I populatesit z wartością właściwości ProcessName bieżącego procesu.
wreszcie, Format-List
cmdlet jest używany do wyświetlania nazwy i modułów każdego procesu na liście.
przykład 3: Select processes using the most memory
Ten przykład pobiera pięć procesów, które używają najwięcej pamięci. PolecenieGet-Process
pobiera procesy na komputerze. PolecenieSort-Object
sortuje procesy według użycia pamięci(zestawu roboczego), a polecenie Select-Object
wybiera tylko pięć ostatnich elementów tablicy obiektów.
parametr Wait nie jest wymagany w poleceniach zawierających poleceniaSort-Object
, ponieważSort-Object
przetwarza wszystkie obiekty, a następnie zwraca kolekcję. OptymalizacjaSelect-Object
jest dostępna tylko dla poleceń, które zwracają obiekty pojedynczo podczas ich przetwarzania.
przykład 4: Wybierz unikalne znaki z tablicy
Ten przykład używa unikalnego parametruSelect-Object
, aby uzyskać unikalne znaki ze znaków arrayof.
"a","b","c","a","a","a" | Select-Object -Uniqueabc
przykład 5: Wybierz najnowsze i najstarsze zdarzenia w dzienniku zdarzeń
Ten przykład pobiera Pierwsze (najnowsze) i ostatnie (najstarsze) zdarzenia w dzienniku zdarzeń Windows PowerShell.
Get-EventLog
pobiera wszystkie zdarzenia w dzienniku Windows PowerShell i zapisuje je w zmiennej$a
.Następnie$a
jest przesyłany do poleceniaSelect-Object
. PolecenieSelect-Object
używa parametru Indexparameter do wybierania zdarzeń z tablicy zdarzeń w zmiennej$a
. Indeks firstevent wynosi 0. Indeksem ostatniego zdarzenia jest ilość pozycji w $a
minus 1.
$a = Get-EventLog -LogName "Windows PowerShell"$a | Select-Object -Index 0, ($A.count - 1)
przykład 6: Zaznacz wszystkie oprócz pierwszego obiektu
Ten przykład tworzy nową sesję na każdym z komputerów wymienionych w serwerach.pliki txt, z wyjątkiem pierwszego.
Select-Object
wybiera wszystkie z wyjątkiem pierwszego komputera na liście nazw komputerów. Wynikowa lista komputerów jest ustawiana jako wartość parametru ComputerName poleceniaNew-PSSession
.
New-PSSession -ComputerName (Get-Content Servers.txt | Select-Object -Skip 1)
przykład 7: Zmień nazwy plików i wybierz kilka, aby przejrzeć
Ten przykład dodaje przyrostek „-ro” do podstawowych nazw plików tekstowych, które mają atrybut Tylko do odczytu, a następnie wyświetla pierwsze pięć plików, aby użytkownik mógł zobaczyć próbkę efektu.
Get-ChildItem
używa dynamicznego parametru ReadOnly, aby uzyskać pliki tylko do odczytu. Wynikowe pliki są przesyłane do poleceniaRename-Item
, które zmienia nazwę pliku. Używa parametru Passthru z Rename-Item
, aby wysłać zmienione pliki do polecenia Select-Object
, który wybiera pierwsze 5 fordisplay.
parametr WaitSelect-Object
uniemożliwia PowerShell zatrzymanie poleceniaGet-ChildItem
po pobraniu pierwszych pięciu plików tekstowych tylko do odczytu. Bez tego parametru zmieniłoby się tylko pierwsze pięć plików tylko do odczytu.
Get-ChildItem *.txt -ReadOnly | Rename-Item -NewName {$_.BaseName + "-ro.txt"} -PassThru | Select-Object -First 5 -Wait
przykład 8: Pokaż zawiłości parametru-ExpandProperty
Ten przykład pokazuje zawiłości parametru ExpandProperty.
zwróć uwagę, że wygenerowane wyjście to tablica wystąpień . Instancje są zgodne ze standardowymi regułami formatowania widoku wyjściowego. Dotyczy to wszelkich rozszerzonych właściwości. Jeśli obiekty outputted mają określony standardowy format, Rozszerzona właściwość może nie być widoczna.
# 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
przykład 9: Tworzenie własnych właściwości obiektów
poniższy przykład pokazuje użycie Select-Object
, aby dodać własną właściwość do dowolnego obiektu.Gdy podasz nazwę właściwości, która nie istnieje, Select-Object
tworzy tę właściwość jako aNoteProperty dla każdego przekazanego obiektu.
przykład 10: Utwórz obliczone właściwości dla każdego obiektu wejściowego
Ten przykład demonstruje użycieSelect-Object
, aby dodać obliczone właściwości do danych wejściowych. Przekazanie ScriptBlock do parametru właściwości powoduje, że Select-Object
obliczy wyrażenie któregokolwiek przekazanego obiektu i doda wyniki do wyniku. W scriptbloku można użyć zmiennej$_
, aby odwołać się do bieżącego obiektu w potoku.
domyślnie Select-Object
użyje ciągu ScriptBlock jako nazwy właściwości. Używając aHashtable, możesz oznaczyć wynik swojego Scriptblocka jako niestandardową właściwość dodaną do każdego obiektu. Możesz dodać wiele obliczonych właściwości do każdego obiektu przekazanego do Select-Object
.
parametry
określa właściwości, które ten cmdlet wyklucza z operacji. Dozwolone są symbole wieloznaczne.
począwszy od PowerShell 6, nie jest już wymagane dołączanie parametru właściwości forExcludeProperty do działania.
Typ: | ciąg |
pozycja: | Nazwa |
Wartość domyślna: | brak |
Akceptuj wejście rurociągu: | false |
Akceptuj znaki wieloznaczne: | True |
określa właściwość do wyboru i wskazuje, że należy podjąć próbę rozwinięcia tego property.
- jeśli określona właściwość jest tablicą, każda wartość tablicy jest dołączana do wyjścia.
- jeśli określona właściwość jest obiektem, właściwości obiektów są rozwijane dla everyInputObject
w obu przypadkach Typ wyjściowy obiektów będzie zgodny z typem rozszerzonej właściwości.
Jeśli parametr właściwości jest określony,Select-Object
spróbuje dodać każde selectedproperty jako NoteProperty do każdego obiektu wyjściowego.
Ostrzeżenie
Jeśli pojawi się błąd: Select : właściwość nie może być przetworzona, ponieważ właściwość <PropertyName>
już istnieje, rozważ następujące kwestie.Zauważ, że podczas używania -ExpandProperty
Select-Object
nie może zastąpić istniejącej właściwości.Oznacza to:
- Jeśli Rozszerzony obiekt ma właściwość o tej samej nazwie, wystąpi błąd.
- Jeśli zaznaczony obiekt ma właściwość o tej samej nazwie co właściwość obiektów rozszerzonych, pojawi się anerror.
Typ: | ciąg |
pozycja: | Nazwa |
Wartość domyślna: | brak |
accept pipeline input: | false |
accept wildcard characters: | false |
określa liczbę obiektów do wyboru od początku tablicy obiektów wejściowych.
Typ: | Int32 |
pozycja: | Nazwa |
Wartość domyślna: | brak |
Akceptuj wejście rurociągu: | false |
Akceptuj znaki wieloznaczne: | false |
wybiera obiekty z tablicy na podstawie ich wartości indeksu. Wprowadź indeksy na liście rozdzielonej przecinkami. Indeksy w tablicy rozpoczynają się od 0, gdzie 0 oznacza pierwszą wartość, A (n-1) oznacza ostatnią wartość.
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
.
podczas przekazywania obiektów do parametru InputObject, zamiast używać potoku,Select-Object
traktuje obiekt InputObject jako pojedynczy obiekt, nawet jeśli wartość jest kolekcją. Zaleca się używanie potoku podczas przekazywania kolekcji do Select-Object
.
Typ: | PSObject |
pozycja: | Nazwa |
Wartość domyślna: | brak |
Akceptuj wejście potoku: | true |
Akceptuj znaki wieloznaczne: | 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. Właściwości te są dodawane jako elementy NoteProperty do obiektów output. Dozwolone są symbole wieloznaczne.
wartość parametru właściwości może być nową obliczoną właściwością. Aby utworzyć właściwość obliczoną, Użyj tabeli skrótu.
poprawne klucze to:
- nazwa (lub etykieta) –
<string>
- wyrażenie –
<string>
lub<script block>
aby uzyskać więcej informacji, seeabout_calculated_properties.
Typ: | obiekt |
pozycja: | 0 |
wartość domyślna: | brak |
Akceptuj wejście potoku: | False |
Akceptuj znaki wieloznaczne: | True |
pomija (nie zaznacza) określoną liczbę pozycji. Domyślnie liczony jest parametr Pomiń od początku tablicy lub listy obiektów, ale jeśli polecenie użyje ostatniego parametru, liczony jest od końca listy lub tablicy.
w przeciwieństwie do parametru Index, który rozpoczyna liczenie od 0, parametr Skip zaczyna się od 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 |
pomija (nie wybiera) określoną liczbę pozycji z końca listy lub tablicy. Działa w ten sam sposób, jak użycie Skip wraz z ostatnim parametrem.
w przeciwieństwie do parametru Index, który rozpoczyna liczenie od 0, parametr SkipLast zaczyna się od 1.
Typ: | Int32 |
pozycja: | Nazwa |
Wartość domyślna: | brak |
Akceptuj wejście rurociągu: | False |
Akceptuj znaki wieloznaczne: | False |
określa, że jeśli podzbiór wejściowych obiektów ma identyczne właściwości i wartości, zostanie wybrany tylko pojedynczy członek podzbioru.
ten parametr uwzględnia wielkość liter. W rezultacie łańcuchy, które różnią się tylko obudową znaków, są uważane za unikalne.
Typ: | parametr przełącznika |
pozycja: | Nazwa |
Wartość domyślna: | brak |
Akceptuj wejście potoku: | False |
False |
wskazuje, że cmdlet wyłącza optymalizację. PowerShell uruchamia polecenia w kolejności, w jakiej występują w potoku poleceń i pozwala na generowanie wszystkich obiektów. Domyślnie, jeśli umieścisz polecenieSelect-Object
z pierwszymi lub Indeksowanymi parametrami w potoku poleceń, PowerShellstops polecenie, które generuje obiekty, gdy tylko zostanie wygenerowana wybrana liczba obiektów.
ten parametr został wprowadzony w Windows PowerShell 3.0.
Typ: | parametr przełącznika |
pozycja: | Nazwa |
Wartość domyślna: | brak |
Akceptuj wejście rurociągu: | false |
Akceptuj znaki wieloznaczne: | False |
wejścia
PSObject
możesz podłączyć dowolny obiekt doSelect-Object
.
wyjścia
PSObject
uwagi
-
Możesz również odwołać się do polecenia
Select-Object
za pomocą wbudowanego aliasu,select
. Aby uzyskać więcej informacji, zobacz about_Aliases. -
funkcja optymalizacji
Select-Object
jest dostępna tylko dla poleceń, które zapisują obiekty do potoku w trakcie ich przetwarzania. Nie ma wpływu na polecenia buforujące przetwarzane obiekty i zapisujące je jako kolekcję. Natychmiastowe pisanie obiektów jest najlepszą praktyką projektowania cmdletów. Aby uzyskać więcej informacji, zobacz zapisywanie pojedynczych rekordów do rurociągu zgodnie z wytycznymi dotyczącymi rozwoju.
- about_Calculated_Properties
- Grupa-obiekt
- Sortuj-obiekt
- gdzie-obiekt