Pole
- 08/26/2020
- 14 minut číst
-
- c
Krátký Popis
Popisuje pole, která jsou datové struktury, navržen tak, aby storecollections položek.
dlouhý popis
pole je datová struktura, která je určena k ukládání sbírky položek.Položky mohou být stejného typu nebo různých typů.
začátek v systému Windows PowerShell 3.,0, sbírka nuly nebo jednoho objektu máněkteré vlastnosti polí.
vytvoření a inicializace pole
Chcete-li vytvořit a inicializovat pole, přiřaďte proměnné více hodnot. Hodnoty uložené v poli jsou vymezeny čárkou a odděleny od názvu operátorem přiřazení (=
).,
chcete-li například vytvořit pole s názvem $A
, který obsahuje sedm numerické (int)hodnot 22, 5, 10, 8, 12, 9, a 80, typ:
čárka může být také použit k inicializaci jedné položky pole umístěním thecomma než jednu položku.
chcete-li například vytvořit jednu položku pole s názvem $B
obsahující singlevalue 7, typ:
můžete také vytvořit a inicializovat pole pomocí rozsah operátor (..
).,Následující příklad vytvoří pole obsahující hodnoty 5 až 8.
Jako výsledek, $C
obsahuje čtyři hodnoty: 5, 6, 7, a 8.
není-li zadán žádný datový typ, PowerShell vytvoří každé pole jako objectarray (systém.Předmět). Chcete-li určit datový typ pole, použijtemettype() metoda., Chcete-li například určit typ dat $A
array, typ:
K vytvoření silně typované pole, to znamená, že pole, které může obsahovat onlyvalues určitého typu, obsazení proměnné typu pole, tak jako řetězcem, dlouho, nebo int32. Chcete-li obsadit pole, předejtevariabilní název s typem pole uzavřeným v závorkách., Chcete-li například vytvořit 32bitové celé číslo pole s názvem $ia
obsahující čtyři celá čísla (1500, 2230, 3350,a 4000), typ:
Jako výsledek, $ia
pole může obsahovat pouze celá čísla.
můžete vytvořit pole, která jsou obsazena do libovolného podporovaného typu v Microsoft.NET Framework. Například objekty, které Get-Process
načtezastupující procesy, jsou systému.Diagnostik.Typ procesu., Vytvořit astrongly zadané pole objektů procesu, zadejte následující příkaz:
pole sub-výraz, operátor
pole sub-výraz, operátor vytvoří pole z prohlášení insideit. Bez ohledu na to, co prohlášení uvnitř operátora produkuje, operátor budeumístěte jej do pole. I když existuje nula nebo jeden objekt.
syntaxe operátora pole je následující:
operátor pole můžete použít k vytvoření pole nula nebo jednoho objektu., Například:
pole operátor je užitečné ve skriptech, když jste získali objekty, ale donot vědět, jak mnoho objektů dostanete. Například:
pro více informací o operátorovi pole sub-výraz vizabout_operators.
Přístup a použití prvků pole
Čtení pole
můžete odkazovat na pole pomocí jeho název proměnné. Chcete-li zobrazit všechnyprvky v poli zadejte název pole., Například, za předpokladu, že $a
je anarray obsahující celá čísla 0, 1, 2, až 9; psaní:
můžete se odkazovat na prvky v poli pomocí indexu, začátek atposition 0. Přiložte číslo indexu do závorek., Například, pro zobrazení první prvek v $a
array, typ:
K zobrazení na třetí element v $a
pole, zadejte:
můžete načíst část pole pomocí řady operátor pro index. Například, získat druhý až pátý prvky pole, wouldtype:
Záporná čísla se počítají od konce pole., Například“ -1 “ odkazujeposlední prvek pole. K zobrazení poslední tři prvky thearray, v indexu vzestupném pořadí, typ:
Pokud zadáte záporné indexy v sestupném pořadí, vaše změny výstupu.
při použití tohoto zápisu však buďte opatrní. Notační cykly od hranice k začátku pole.,
můžete použít operátor plus (+
) kombinovat se pohybuje s seznam elementsin pole. Například, pro zobrazení prvků na index pozice 0, 2, and4 přes 6, typ:
Také, aby seznam více oblastí a jednotlivé prvky můžete použít plusoperator., Například, aby se seznam prvků, nula dva, čtyři až šest, a theelement na osmém poziční typ:
Iterace přes prvky pole
můžete také použít looping konstrukty, jako ForEach, For, While, torefer prvků v poli. Například, používat smyčky ForEach zobrazit prvky v $a
array, typ:
Foreach smyčka iteruje přes pole a vrátí všechny hodnoty v thearray až do dosažení konce pole.,
smyčka For Je užitečná, když zvyšujete čítače při zkoumání prvků v poli. Například, používat Pro smyčce, vrátit se každý othervalue v poli, typ:
můžete použít cyklus While k zobrazení prvků v matici, dokud definedcondition již není pravda., Například, pro zobrazení prvků v $a
pole, zatímco index pole je menší než 4, typ:
Vlastnosti polí
Počet nebo Délku nebo LongLength
určit, kolik položky jsou v poli, pomocí Length
majetku nebo jehoCount
alias. Longlength
je užitečné, pokud pole obsahuje více než 2,147,483,647 prvky.
Rank
vrací počet rozměrů v poli., Většina polí v PowerShellu májeden rozměr, pouze. Dokonce i když si myslíte, že jste budování multidimensionalarray; jako v následujícím příkladu:
následující příklad ukazuje, jak vytvořit skutečně multidimenzionální pole pomocí .Net Framework.
Způsoby pole
Nastaví všechny hodnoty prvků na výchozí hodnotu pole“typ prvku.Metoda Clear () nevynuluje velikost pole.,
v následujícím příkladu $a
je pole objektů.
V tomto příkladu $intA
je výslovně napsaný, že obsahují celá čísla.
ForEach
Umožňuje iterovat přes všechny prvky v poli a provádět dané operationfor každý prvek pole.
metoda ForEach má několik přetížení, které provádějí různé operace.,
ForEach(scriptblock výraz)
ForEach(scriptblock výraz, objekt argumenty)
Tato metoda byla přidána v PowerShell v4.
Poznámka
syntaxe vyžaduje použití bloku skriptů. Závorky jsou volitelné, pokudstriptblock je jediným parametrem. Také nesmí existovat mezeramezi metodou a otevírací závorkou nebo ortézou.
následující příklad ukazuje, jak používat metodu foreach. V tomto případě jde o generování čtvercové hodnoty prvků v poli.,
Stejně jako -ArgumentList
parametr ForEach-Object
arguments
parametr umožňuje procházení pole argumentů skriptu blockconfigured je přijmout.
pro více informací o chování ArgumentList, vizabout_splatting.,
ForEach(typ convertToType)
ForEach
metoda může být použita k rychlému obsazení prvky na differenttype; následující příklad ukazuje, jak převést seznam řetězec data do typu.
ForEach(string propertyName)
ForEach(string propertyName, objekt newValue)
ForEach
metoda může být také použit k rychle načíst, nebo nastavit propertyvalues pro každou položku v kolekci.,
ForEach(string methodName)
ForEach(string methodName, objekt argumenty)
a Konečně, ForEach
metody mohou být použity k provedení metody na každou položku v kolekci.
Stejně jako -ArgumentList
parametr ForEach-Object
arguments
parametr umožňuje procházení pole argumentů skriptu blockconfigured je přijmout.
Poznámka
spuštění v systému Windows PowerShell 3.,0 načítání vlastností a executingmethods pro každou položku v kolekci může být také dosaženo pomocí „Metody skalární objekty a kolekce“ můžete Si přečíst více o tom hereabout_methods.
kde
umožňuje filtrovat nebo vybrat prvky pole. Skript musí evaluateto nic jiného, než: nula (0), prázdný řetězec, $false
nebo $null
pro prvek ukázat po Where
Tady je jedna definice pro Where
metoda.,
Poznámka
syntaxe vyžaduje použití bloku skriptů. Závorky jsou volitelné, pokudstriptblock je jediným parametrem. Také nesmí existovat mezeramezi metodou a otevírací závorkou nebo ortézou.
Expression
je scriptblock, že je nutné pro filtrování, mode
nepovinný argument umožňuje další výběr schopností, anumberToReturn
nepovinný argument umožňuje schopnost omezit kolik položky jsou vráceny z filtru.,p>přijatelné hodnoty pro mode
jsou:
- Default (0) – Vrátí všechny položky
- První (1) – Vrátí první položka
- Poslední (2) – Vrátit poslední položka
- SkipUntil (3) – Přeskočit položky, dokud je podmínka splněna, návrat remainingitems
- Až (4) – Vrátit všechny položky, dokud je podmínka true
- Rozdělení (5) – Vrací pole dvou prvků
- první prvek obsahuje odpovídající položky
- druhý prvek obsahuje zbývající položky
následující příklad ukazuje, jak vybrat všechna lichá čísla z pole.,
Tento příklad ukazuje, jak vybrat struny, které nejsou prázdné.
Default
Default
režim filtry položky pomocí Expression
scriptblock.
Pokud je k dispozici numberToReturn
, určuje maximální počet položekproměnit.,
Poznámka:
Default
režim First
režim vrátí první(numberToReturn
) položek, a mohou být použity zaměnitelně.
Poslední
SkipUntil
SkipUntil
režim přeskočí všechny objekty v kolekci, dokud objekt předá blok skriptu výrazu filtru. Poté vrátí všechny zbývající collectionitemy bez jejich testování. Testuje se pouze jedna procházející položka.
to znamená, že vrácená sbírka obsahuje jak procházející, tak i procházející položky, které nebyly testovány.,
počet vrácených položek lze omezit předáním hodnoty argumentunumberToReturn
.
Dokud
Until
režim obrátí SkipUntil
režim. Vrací všechny položky v akolekci, dokud položka neprojde výrazem bloku skriptu. Jakmile itempasses výraz scriptblock, Where
metoda zastaví zpracování položek.
to znamená, že obdržíte první sadu nepřecházejících položek z metodyWhere
., Poté, co jedna položka projde, zbytek není testován ani vrácen.
počet vrácených položek lze omezit předáním hodnoty argumentunumberToReturn
.
Poznámka:
Until
SkipUntil
provozovat za předpokladu, že NEJSOU testování batchof položky.
Until
vrátí položky před prvním průchodem.
SkipUntil
vrátí všechny položky po prvním průchodu, včetně první procházející položky.,
Split
Split
mode splits, or groups collection items into two separatecolections. Ty, které projdou výrazem scriptblock, a ty, které ne.
Pokud je zadáno numberToReturn
, první kolekce obsahuje položky, které nepřekračují zadanou hodnotu.
zbývající objekty, dokonce i ty, které procházejí expresním filtrem, jsouv druhé sbírce.,
Získejte členy pole
získat vlastnosti a metody, pole, například Délku majetku a SetValue metoda, použití InputObject parametr Get-Member
rutiny.
Když jste potrubí pole Get-Member
, PowerShell odešle položky u čas a Get-Member
vrátí typ každé položky v poli (ignoringduplicates).
při použití parametru InputObject vrátíGet-Member
členy pole.,
například následující příkaz získá členy $a
arrayvariable.
můžete také získat členy pole zadáním čárky (,) než hodnota, která je zavedená do Get-Member
rutiny. Čárka dělá pole thesecond položky v poli polí. PowerShell potrubí pole jeden ata čas a Get-Member
vrátí členy pole. Jako další dvapříklady.,
Manipulování pole
můžete změnit prvky v matici, přidat prvek do pole, andcombine hodnoty ze dvou polí do třetího pole.
změnit hodnotu určitého prvku v poli, zadejte arrayname a index prvku, který chcete změnit, a pak použít theassignment operátor (=
) k zadání nové hodnoty pro daný prvek., Například změnit hodnotu na druhou položku v $a
array (index polohy 1) to10, typ:
můžete také použít SetValue metoda pole pro změnu hodnoty. Následující příklad změní druhá hodnota (pozice index 1) $a
arrayto 500:
můžete použít +=
operátor přidat prvek do pole. Následující příklad ukazuje, jak přidat prvek do pole$a
.,
Poznámka:
Při použití +=
provozovatel, PowerShell vlastně vytváří nové arraywith hodnot původního pole a přidanou hodnotu. To může způsobit problémy s výkonem, pokud se operace opakuje několikrát nebovelikost pole je příliš velká.
To není snadné odstranit prvky z pole, ale můžete vytvořit newarray, která obsahuje pouze vybrané prvky ze stávajícího pole., Chcete-li například vytvořit $t
pole se všemi prvky v $a
array s výjimkou hodnoty na index polohy 2, typ:
kombinovat dvě pole do jednoho pole, použít operátor plus (+
). Thefollowing příklad vytvoří dvě pole, kombinuje je, a pak zobrazí theresulting kombinované pole.
výsledkem je, že pole$z
obsahuje 1, 3, 5 a 9.,
Chcete-li pole odstranit, přiřaďte k poli hodnotu $null
. Následující příkaz odstraní pole v proměnné $a
.
$a = $null
můžete také použít Remove-Item
rutiny, ale přiřazení hodnoty $null
isfaster, zejména pro velké pole.
pole nula nebo jeden
začíná v systému Windows PowerShell 3.0, sbírka nuly nebo jednoho objektu má vlastnost počet a délka. Také můžete indexovat do pole jednohobjekt., Tato funkce vám pomůže vyhnout se chybám skriptování, ke kterým dochází, když acommand, který očekává, že sbírka dostane méně než dvě položky.
následující příklady ukazují tuto funkci.
Žádné objekty
Jeden objekt
Indexování podporu pro Systém.Nuple objects
PowerShell 6.1 přidal podporu pro indexovaný přístup Tuple objektů, podobně jako pole.,Například:
na Rozdíl od polí a jiné sbírky objekty, n-Tice objektů jsou považovány jako jeden objekt, když prošel přes potrubí nebo parametry, které supportarrays objektů.
Další informace naleznete v části Systém.Dvojice.
Viz také
- about_Assignment_Operators
- about_Hash_Tables
- about_Operators
- about_For
- about_Foreach
- about_While