About Arrays
- 08/26/2020
- 14 minut do odczytu
-
- S
- s
i c
krótki opis
opisuje tablice, które są strukturami danych zaprojektowanymi do przechowywania kolekcji elementów.
długi opis
tablica jest strukturą danych przeznaczoną do przechowywania kolekcji elementów.Elementy mogą być tego samego typu lub różnych typów.
począwszy od Windows PowerShell 3.,0, zbiór zero lub jeden obiekt ma właściwości tablic.
Tworzenie i inicjalizacja tablicy
aby utworzyć i inicjalizować tablicę, Przypisz wiele wartości do zmiennej. Wartości zapisane w tablicy są rozdzielane przecinkiem i oddzielane od zmiennej nazwy operatorem przypisania (=
).,
na przykład, aby utworzyć tablicę o nazwie $A
zawierającą siedem liczbowych (int)wartości 22, 5, 10, 8, 12, 9, and 80, type:
przecinek może być również użyty do zainicjowania tablicy pojedynczej pozycji przez umieszczenie comma przed pojedynczą pozycją.
na przykład, aby utworzyć tablicę pojedynczych elementów o nazwie $B
zawierającą pojedynczą wartość 7, wpisz:
można również utworzyć i zainicjalizować tablicę za pomocą operatora zakresu (..
).,Poniższy przykład tworzy tablicę zawierającą wartości od 5 do 8.
w rezultacie$C
zawiera cztery wartości: 5, 6, 7 i 8.
Gdy Nie podano typu danych, PowerShell tworzy każdą tablicę jako objectarray (System.Obiekt). Aby określić typ danych tablicy, należy użyć metody GetType ()., Na przykład, aby określić typ danych tablicy $A
, wpisz:
aby utworzyć silnie wpisaną tablicę, czyli tablicę, która może zawierać tylko wartości określonego typu, podaj zmienną jako typ tablicy, taki jak asstring, long lub int32. Aby utworzyć tablicę, należy poprzedzić zmienną nazwę typem tablicy umieszczonym w nawiasach., Na przykład, aby utworzyć 32-bitową tablicę całkowitą o nazwie $ia
zawierającą cztery liczby całkowite (1500, 2230, 3350 i 4000), wpisz:
w rezultacie tablica $ia
może zawiera tylko liczby całkowite.
można tworzyć tablice, które są rzutowane na dowolny obsługiwany typ w Microsoft.NET ramy. Na przykład obiekty, które Get-Process
pobierają reprezentowane procesy, należą do systemu.Diagnostyka.Typ procesu., Aby wytworzyć odpowiednio wpisaną tablicę obiektów procesu, należy wprowadzić następujące polecenie:
Operator pod-wyrażenia array
Operator pod-wyrażenia array tworzy tablicę z instrukcji insideit. Niezależnie od instrukcji wewnątrz operatora, operator umieści ją w tablicy. Nawet jeśli istnieje zero lub jeden obiekt.
składnia operatora tablicy jest następująca:
możesz użyć operatora tablicy do utworzenia tablicy zawierającej zero lub jeden obiekt., Przykład:
operator tablicy jest przydatny w skryptach, gdy otrzymujesz obiekty, ale nie wiesz, ile masz obiektów. Na przykład:
aby uzyskać więcej informacji o operatorze pod-wyrażenia array, zobaczabout_operators.
dostęp do tablicy i korzystanie z niej
odczyt tablicy
można odwoływać się do tablicy używając jej nazwy zmiennej. Aby wyświetlić wszystkie elementy tablicy, wpisz nazwę tablicy., Na przykład, zakładając $a
jest tablicą zawierającą liczby całkowite 0, 1, 2, aż do 9; wpisując:
możesz odwoływać się do elementów w tablicy, używając indeksu, rozpoczynającego się od pozycji 0. W nawiasach należy podać numer indeksu., Na przykład, aby wyświetlić pierwszy element w tablicy $a
, wpisz:
aby wyświetlić trzeci element w tablicy $a
, wpisz:
możesz pobrać część tablicy używając operatora zakresu dla indeksu. Na przykład, aby pobrać od drugiego do piątego elementu tablicy, należy wpisać:
liczby ujemne liczą się od końca tablicy., Na przykład „-1” odnosi się do ostatniego elementu tablicy. Aby wyświetlić trzy ostatnie elementy thearray, w porządku rosnącym indeksu, wpisz:
Jeśli wpiszesz indeksy ujemne w porządku malejącym, Twój wynik zmieni się.
należy jednak zachować ostrożność podczas używania tej notacji. Cykle notacji od granicy do początku tablicy.,
możesz użyć operatora plus (+
), aby połączyć zakresy z listą elementów w tablicy. Na przykład, aby wyświetlić elementy w pozycjach indeksowych 0, 2 i 4 do 6, wpisz:
również, aby wyświetlić wiele zakresów i poszczególnych elementów można użyć plusoperator., Na przykład, aby wyświetlić listę elementów od zera do dwóch, od czterech do sześciu, aelement na ósmej pozycji:
iteracji elementów tablicy
można również użyć pętli pętli, takich jak pętle ForEach, For I While, aby oddzielić elementy w tablicy. Na przykład, aby użyć pętli ForEach do wyświetlenia elementów w tablicy $a
, wpisz:
pętla Foreach iteruje przez tablicę i zwraca każdą wartość w tablicy, aż do osiągnięcia końca tablicy.,
pętla For jest przydatna podczas zwiększania liczników podczas badania elementów w tablicy. Na przykład, aby użyć pętli For do zwrócenia każdej innej wartości w tablicy, wpisz:
możesz użyć pętli While do wyświetlenia elementów w tablicy, dopóki zdefiniowana klauzula nie przestanie być prawdziwa., Na przykład, aby wyświetlić elementy w tablicy $a
, gdy indeks tablicy jest mniejszy niż 4, Wpisz:
właściwości tablic
Count or Length or LongLength
aby określić, ile elementów znajduje się w tablicy, użyj właściwości Length
lub jej aliasuCount
. Longlength
jest przydatne, jeśli tablica zawiera więcej niż 2,147,483,647 elementów.
Ranga
Zwraca liczbę wymiarów w tablicy., Większość tablic w PowerShell ma tylko jeden wymiar. Nawet jeśli wydaje ci się, że budujesz wielowymiarową tablicę; jak w poniższym przykładzie:
poniższy przykład pokazuje, jak stworzyć prawdziwie wielowymiarową tablicę przy użyciu.Net Framework.
metody tablic
Wyczyść
ustawia wszystkie wartości elementu na domyślną wartość typu tablicy”s element.Metoda Clear () nie resetuje rozmiaru tablicy.,
w poniższym przykładzie $a
jest tablicą obiektów.
w tym przykładzie$intA
jest jawnie wpisany, aby zawierał liczby całkowite.
ForEach
umożliwia iterację wszystkich elementów tablicy i wykonanie danej operacji dla każdego elementu tablicy.
metoda ForEach ma kilka przeciążeń, które wykonują różne operacje.,
ForEach(wyrażenie scriptblock)
ForEach(wyrażenie scriptblock, argumenty obiektu)
ta metoda została dodana w PowerShell v4.
Uwaga
składnia wymaga użycia bloku skryptu. Nawiasy są opcjonalne, jeśli jedynym parametrem jest blok scriptblock. Ponadto nie może istnieć spacja między metodą a nawiasem otwierającym lub nawiasem klamrowym.
poniższy przykład pokazuje, jak korzystać z metody foreach. W tym przypadku theintent ma wygenerować wartość kwadratową elementów w tablicy.,
podobnie jak -ArgumentList
parametr ForEach-Object
, arguments
parametr pozwala na przekazywanie tablicy argumentów do bloku skryptu skonfigurowanego do ich akceptacji.
aby uzyskać więcej informacji na temat zachowania ArgumentList, zobaczabout_splatting.,
ForEach(Typ convertToType)
metodaForEach
może być używana do szybkiego przerzucania elementów na inny typ; poniższy przykład pokazuje, jak przekonwertować listę dat łańcuchów na typ.
ForEach(string propertyName)
ForEach(string propertyName, object newValue)
ForEach
metoda może być również używana do szybkiego pobierania lub ustawiania wartości właściwości dla każdego elementu w kolekcji.,
ForEach(string methodName)
ForEach(string methodName, object arguments)
wreszcie,ForEach
metody mogą być użyte do wykonania metody na każdym elemencie w kolekcji.
podobnie jak -ArgumentList
parametr ForEach-Object
, arguments
parametr pozwala na przekazywanie tablicy argumentów do bloku skryptu skonfigurowanego do ich akceptacji.
Uwaga
uruchamianie w Windows PowerShell 3.,0 pobieranie właściwości i wykonywanie methods dla każdego elementu w kolekcji można również wykonać za pomocą „Methodsof scalar objects and collections” więcej na ten temat można przeczytać tutaj.
gdzie
umożliwia filtrowanie lub zaznaczanie elementów tablicy. Skrypt musi oceniać cokolwiek innego niż: zero (0), pusty łańcuch, $false
lub $null
aby element wyświetlał się po Where
istnieje jedna definicja Where
metoda.,
Uwaga
składnia wymaga użycia bloku skryptu. Nawiasy są opcjonalne, jeśli jedynym parametrem jest blok scriptblock. Ponadto nie może istnieć spacja między metodą a nawiasem otwierającym lub nawiasem klamrowym.
Expression
jest blokiem skryptów, który jest wymagany do filtrowania, mode
opcjonalny argument umożliwia dodatkowe możliwości wyboru, anumberToReturn
opcjonalny argument pozwala ograniczyć liczbę elementów zwracanych z filtra.,p>akceptowalnymi wartościami dla mode
są:
- Default (0) – zwraca wszystkie elementy
- First (1) – zwraca pierwszą pozycję
- Last (2) – zwraca ostatnią pozycję
- SkipUntil (3) – pomija elementy do momentu spełnienia warunku, zwraca pozostałe elementy
- Until (4) – zwraca wszystkie elementy do warunek jest true
- Split (5) – zwraca tablicę dwóch elementów
- pierwszy element zawiera pasujące elementy
- drugi element zawiera pozostałe elementy
poniższy przykład pokazuje, jak wybrać wszystkie nieparzyste liczby z tablicy.,
Ten przykład pokazuje, jak wybrać ciągi znaków, które nie są puste.
domyślnie
Default
tryb filtruje elementy za pomocą bloku skryptowegoExpression
.
Jeśli podanonumberToReturn
, określa maksymalną liczbę elementów, które zostaną zwrócone.,
Uwaga
zarównoDefault
orazFirst
zwracają pierwsze (numberToReturn
) elementy i mogą być używane zamiennie.
Last
SkipUntil
trybSkipUntil
pomija wszystkie obiekty w kolekcji, dopóki obiekt nie przejdzie przez filtr wyrażenia bloku skryptu. Następnie zwraca wszystkie pozostałe elementy kolekcji bez ich testowania. Testowany jest tylko jeden element przechodzący.
oznacza to, że zwracana Kolekcja zawiera zarówno elementy przechodzące, jak i nie przechodzące, które nie zostały przetestowane.,
Liczba zwracanych pozycji może być ograniczona przez przekazanie wartości do argumentunumberToReturn
.
dopóki
Until
tryb odwracaSkipUntil
tryb. Zwraca wszystkie pozycje wkolekcji, dopóki element nie przekaże wyrażenia blokującego skrypt. Gdy itempasses the scriptblock expression,Where
metoda zatrzymuje przetwarzanie elementów.
oznacza to, że otrzymujesz pierwszy zestaw nie przechodzących elementów z metodyWhere
., Po przejściu jednego przedmiotu, reszta nie jest testowana lub zwracana.
Liczba zwracanych pozycji może być ograniczona przez przekazanie wartości do argumentunumberToReturn
.
Uwaga
zarównoUntil
, jak iSkipUntil
działają zgodnie z założeniem, że nie testują elementów pakietu.
Until
zwraca pozycje przed pierwszym przejściem.
SkipUntil
zwraca wszystkie pozycje po pierwszym przejściu, łącznie z pierwszym przejściem.,
podziel
trybSplit
dzieli lub grupuje elementy kolekcji na dwie oddzielne Kolekcje. Ci, którzy przechodzą przez wyrażenie blokujące Skrypty, a ci, którzy nie.
Jeśli podano numberToReturn
, to pierwsza kolekcja zawiera elementy, które nie przekraczają podanej wartości.
pozostałe obiekty, nawet te, które przechodzą przez filtr wyrażenia, znajdują się w drugiej kolekcji.,
pobieranie elementów tablicy
aby uzyskać właściwości i metody tablicy, takie jak właściwość Length i metoda SetValue, użyj parametru InputObjectGet-Member
cmdlet.
gdy ustawisz tablicę na Get-Member
, PowerShell wysyła elementy po jednym czasie i Get-Member
zwraca typ każdej pozycji w tablicy (ignoringduplikates).
gdy używasz parametru InputObject,Get-Member
zwraca elementy tablicy.,
na przykład, następujące polecenie pobiera członków $a
arrayvariable.
można również uzyskać elementy tablicy, wpisując przecinek (,) przed wartością, która jest przekazywana doGet-Member
cmdlet. Przecinek sprawia, że tablica thesecond pozycja w tablicy tablic. PowerShell wyprowadza tablice jeden raz, a Get-Member
zwraca elementy tablicy. Jak następne dwa przykłady.,
manipulowanie tablicą
można zmieniać elementy w tablicy, dodawać elementy do tablicy i łączyć wartości z dwóch tablic w trzecią tablicę.
aby zmienić wartość konkretnego elementu w tablicy, określ nazwę tablicy i indeks elementu, który chcesz zmienić, a następnie użyj operatora assignment (=
), aby określić nową wartość dla elementu., Na przykład, aby zmienić wartość drugiej pozycji w tablicy $a
array (pozycja indeksu 1) to10, wpisz:
można również użyć metody SetValue tablicy do zmiany wartości. Następujący przykład zmienia drugą wartość (pozycja indeksu 1) $a
arrayto 500:
możesz użyć operatora +=
aby dodać element do tablicy. Poniższy przykład pokazuje, jak dodać element do tablicy$a
.,
Uwaga
Gdy używasz operatora+=
, PowerShell tworzy nową tablicę z wartościami oryginalnej tablicy i wartością dodaną. Może to powodować problemy z wydajnością, jeśli operacja zostanie powtórzona kilka razy lub rozmiar tablicy jest zbyt duży.
nie jest łatwo usunąć elementy z tablicy, ale można utworzyć newarray, który zawiera tylko wybrane elementy istniejącej tablicy., Na przykład,aby utworzyć tablicę $t
ze wszystkimi elementami w tablicy $a
z wyjątkiem wartości na pozycji indeksu 2, wpisz:
aby połączyć dwie tablice w jedną tablicę, użyj operatora plus (+
). Następny przykład tworzy dwie tablice, łączy je, a następnie wyświetla kombinowaną tablicę.
w rezultacie tablica$z
zawiera 1, 3, 5 i 9.,
aby usunąć tablicę, Przypisz do tablicy wartość $null
. Następująca Komenda usuwa tablicę w zmiennej $a
.
$a = $null
Możesz również użyć Remove-Item
cmdlet, ale przypisując wartość $null
isfaster, szczególnie dla dużych tablic.
Tablice zera lub jedynki
począwszy od Windows PowerShell 3.0, zbiór obiektów zero lub jedynki ma właściwość Count i Length. Możesz również indeksować do tablicy oneobject., Ta funkcja pomaga uniknąć błędów skryptowych, które występują, gdy polecenie oczekujące kolekcji otrzyma mniej niż dwa elementy.
poniższe przykłady pokazują tę funkcję.
Zero obiektów
jeden obiekt
Obsługa indeksowania systemu.Obiekty Tuple
PowerShell 6.1 dodał obsługę indeksowanego dostępu obiektów Tuple, podobnie jak tablice.,Na przykład:
w przeciwieństwie do tablic i innych obiektów kolekcji, Obiekty krotki są traktowane jako jeden obiekt, gdy są przekazywane przez rurociąg lub przez parametry obsługujące obrazy obiektów.
aby uzyskać więcej informacji, zobacz System.Tuple.
patrz również
- o_assignment_operators
- o_hash_tables
- o_operators
- o_for
- o_for
- o_for
- o_for
- o_for
- o_for