wybierz-obiekt

moduł: Microsoft.PowerShell.Narzędzie

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żdegoSystem.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-ChildItempo 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

-ExcludeProperty

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
-ExpandProperty

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 -ExpandPropertySelect-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
-pierwszy

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
-index

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

-InputObject

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
-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. 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
-Pomiń

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
-SkipIndex
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-SkipLast

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
-unikalny

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.

Akceptuj znaki wieloznaczne:

Typ: parametr przełącznika
pozycja: Nazwa
Wartość domyślna: brak
Akceptuj wejście potoku: False
False
-czekaj

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 poleceniaSelect-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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *