Articles

PowerShell Array Guide: Hogyan kell használni és létrehozni

tömbök alapvető jellemzője PowerShell. A tömbök lehetővé teszik a valós adatstruktúrák (és nem csak a nyers karakterláncok) lenyelését, manipulálását és kimenetét. Ez a képesség teszi PowerShell különböző és hasznosabb, mint más programozási nyelvek.

ebben a cikkben elmagyarázzuk, hogy milyen tömbök vannak, és hogyan használjuk őket PowerShellben. Először megmutatjuk, hogyan hozhat létre tömböket PowerShellben, majd hogyan használhatja az alapvető funkciókat a manipulációhoz., Aztán megnézzük a különböző típusú tömbök, és vizsgálja meg néhány finomabb jellemzői őket.

Szerezd meg a Free PowerShell and Active Directory Essentials Video Course

ezt mind az új, mind a fejlett PowerShell felhasználók számára ajánlom. A hirdetési eszköz építése nagyszerű tanulási élmény.

célunk, hogy jó földelést biztosítsunk a PowerShell tömbökkel való munkában. Miután elsajátította ezeket az alapokat, megnézheti a PowerShell tanfolyamunkat, hogy többet megtudjon.,

  • Array Alapjai
  • Tömbök Objektumok
  • Szereplők A Tömbök
  • Hogyan Adjunk Értékek Tömbje
  • Array Típusú
  • Speciális Tömb Funkciók

PowerShell Tömbök

Tömbök egy közös jellemzője, szinte minden programozási nyelvek. Ezek egy adatstruktúra, amely arra szolgál, mint a gyűjtemény több darab adat. Ha egy tömbbel dolgozik, akkor ugyanazt a parancsot használhatja, hogy ugyanazt a funkciót hajtsa végre egy tömb minden elemén belül,vagy hozzáférhet az egyes elemekhez index segítségével.,

tömbök PowerShell tartalmazhat egy vagy több elemet. Egy elem lehet string, egész szám, objektum vagy akár egy másik tömb, egy tömb pedig tartalmazhat ezen elemek bármely kombinációját. Mindegyik tételnek van egy indexe, amely mindig 0-kor kezdődik (néha zavartan). Tehát egy tömb első eleme a 0 indexet kapja, a második pedig az 1 indexet, stb.,

PowerShell tömbök egy ilyen alapvető része PowerShell, hogy úgy tűnik, minden PowerShell bemutató, odakint, egy jó tudás, hogy hogyan kell dolgozni velük, kritikus, a sok szempontból PowerShell segítségével, a beállítása az Office 365-öt használja PowerShell számára, Illetve.

egy példa a PowerShell tömb

a legegyszerűbb módja annak, hogy bemutassa, mi egy tömb, hogy egy példát. Készítsünk egy tömböt, amely egy tál gyümölcsöt képvisel.,

számos módja van, hogy hozzon létre tömbök Powershell, de a legegyszerűbb, hogy futtassa ezt a parancsot:

@()

Ez létrehoz egy üres tömb. Az üres tömb azonban nem olyan hasznos, ezért adjunk hozzá néhány gyümölcsöt az új tömbbe. Ezek szöveges karakterláncokként jelennek meg. Ehhez futtassa ezt a parancsot

$fruit = @('Apples','Oranges','Bananas')

Ez egy” gyümölcs ” tömböt nevez meg, majd három elemet ad hozzá., Ha látni szeretné, hogy ez működött, olvassa el a tömböt a következő paranccsal:

PS /Users/yourname> $fruit

amely most visszatér:

 Apples Oranges Bananas

mint látható, ez a tömb az egyes adatdarabok csoportja. A PowerShell automatikusan indexeli őket a fent leírt módon: az” alma “indexelése 0, a” narancs “1, a” banán ” pedig 2.

Ez a példa lehet, hogy úgy tűnik, mintha a tömbök meglehetősen egyszerű objektumok, és oly módon, hogy azok. Egyszerűségük azonban az is, ami ilyen rugalmas, erőteljes tárgyakká teszi őket., A többi ez az útmutató, adunk egy kis ízelítőt, hogy mit lehet csinálni tömbök.

Array Fundamentals

ebben a szakaszban megvizsgáljuk a legalapvetőbb módszereket a tömbök létrehozásához és kezeléséhez a PowerShellben.

hozzon létre egy tömböt

először létrehozunk egy tömböt. Ennek szokásos módja a @ () használata, bár vannak más módok is.

egyelőre hozzunk létre egy “data”nevű tömböt. Ehhez futtassa:

$data = @()

Ez a tömb jelenleg üres, mert nem adtunk meg semmilyen adatot., Annak ellenőrzéséhez, hogy hány elem van egy tömbben, használhatjuk a count funkciót:

$data.count

, amely jelenleg 0-t ad vissza, mert nincsenek elemek a tömbben. Ahhoz, hogy egy tömb néhány adatot tartalmazzon, ezeket az adatokat a zárójelbe helyezzük, miután a@:

$data = @('Zero','One','Two','Three')

futtassa ugyanazt a számlálási funkciót, és látni fogja, hogy ebben a tömbben 4 elem van. Ha újra látni szeretné ezeket az elemeket, csak meghívjuk a tömböt:

$data

amely felsorolja a tömbbe helyezett elemeket.,

elemek elérése

most van egy tömb,szeretnénk hozzáférni az elemekhez. Ennek számos módja van. Az első a tömb elemeinek indexe. Mint korábban említettük, az indexek 0-kor kezdődnek, tehát a tömb első elemének letöltéséhez meg kell mondanunk a PowerShell-nek, hogy megnézzük azt az elemet, amelynek indexe nulla. Ezt futással tesszük:

$data

Ez visszaadja a” nulla ” – ot, mert ez volt az első karakterlánc, amelyet a tömbünkbe tettünk.,

azt is kiterjeszteni ezt a szintaxist, hogy visszatérjen több elemet ugyanabból a tömbből, csak azáltal, hogy több indexek ugyanabban a parancsban. Például futtassa:

$data

Ez visszaadja a “nulla két három”értéket. Az elemek vissza ugyanabban a sorrendben, hogy belépett az indexek. További szintaxist is használhat az elemek készleteinek visszatéréséhez egy tömbből. Például:

$data

visszaad minden elemet egy index között 1 és 3 (inclusive)., És:

$data

visszaadja a tömb utolsó elemét: a negatív szám azt mondja a Powershellnek, hogy számoljon hátra a tömb végétől, így ebben az esetben ez a parancs “három”, az utolsó elem a teszt tömbben.

változó elemek

ugyanaz a módszer használható egy tömb elemeinek frissítésére. Például az elem frissítéséhez, amelynek indexe 2 (Ne feledje, hogy ez a tömb harmadik eleme), futtathatjuk:

$data = 'second'

Ez közvetlen hozzáférést biztosít a tömbben belüli elemekhez.,

iterált műveletek

a PowerShell (és valójában bármely parancssori interfész) egyik legerősebb tulajdonsága, hogy ugyanazt a műveletet végrehajtja egy tömb összes elemén. Ennek számos különböző módja van.

a legalapvetőbb egy csővezeték használata |amely a karakter/. Amikor egy tömböt átad egy csővezetéknek, a tömb minden elemét egyedileg dolgozzák fel. Amint arra a PowerShell objektumokról és adatvezetékekről szóló cikkünkben rámutattunk, ez gyakran a legegyszerűbb módja az iterált műveletek végrehajtásának.,

például egy leírás hozzáadásához, hogy minden elem a tömbben, akkor ezt a parancsot tudják használni:

$data | ForEach-Object {"Item: "}

Ez a parancs azt mondja PowerShell, hogy a tételek $adatok egyesével, majd mindegyik hozzáad “Tétel:” a kezdet, ezt követi az eredeti értéket.

az iterált műveletek végrehajtásának számos más módja van a PowerShellben, amelyek közül sok ismerős lesz, ha más programozási nyelveket használt: a PowerShell magában foglalja a ForEach hurkokat, a hurkokat és a switch hurkokat. Ezekről további részleteket a Microsoft dokumentációjában talál.,

objektumok tömbjei

eddig egy olyan tömböt dolgoztunk ki, amely alapvető adatokat tartalmaz: egy karakterláncot. A tömbök azonban tartalmazhatnak objektumokat is, a PowerShell leggyakoribb felhasználási módjai – például az Office 365 konfigurálása – megkövetelik, hogy tudja, hogyan kell dolgozni az objektumokkal. Tehát nézzük meg néhány alapvető parancsot erre.

objektumok tömbjének létrehozása

objektumok tömbjét ugyanúgy hozhatjuk létre, mint a karakterláncokkal, a @() funkció használatával., Például az alkalmazottak tesztlistájának elkészítéséhez a következőket használhatjuk:

a legtöbb parancsmag visszatér egy ilyen típusú tömbhöz, amikor egy változót rendel hozzá a munkához.

objektumok elérése a tömbökből

az a folyamat, amelyen keresztül futottunk, hogy elérjük az egyes adatdarabokat, ugyanúgy használható az objektumokat tartalmazó tömbökkel., Például, futás:

$data

visszatér:

 FirstName LastName ----- ---- Kevin Marquette

alternatívaként hozzáférhetünk az egyes objektumok tulajdonságaihoz, meghatározva, hogy melyik tulajdonságot szeretnénk ugyanazon a parancson belül, mint például:

$data.FirstName

amely visszatér “Kevin”.

Frissítése Objektum Tulajdonságait a Tömbök

tovább, ugyanaz a szintaxis ad nekünk a képesség a frissítés egyes tulajdonságok belül tárgyak, amelyek birtokában a tömbök., Például:

$data.FirstName = 'Jay'

frissíti a tömb első elemének FirstName tulajdonságát “Jay” – re.

minden tulajdonság elérése objektumok tömbjében

a legtöbb programozási nyelvben iteratív folyamatot kell használnunk (lásd fent) az objektumok tömbjének összes tulajdonságának eléréséhez. Ezt természetesen PowerShellben is megtehetjük:

$data | ForEach-Object {$_.LastName}

Ez visszaadja a tömb összes vezetéknév-tulajdonságának listáját, de számításilag drága és nehéz írni minden alkalommal, amikor látni szeretné ezeket az adatokat., Tehát ehelyett a Powershellnek van egy parancsikonja. Futtassa ezt:

$data.LastName

és ugyanazt a listát fogja látni. PowerShell valójában figyelembe minden tárgy viszont, mint korábban, de elrejti ezt a komplexitást tőlünk.

tömbök operátorai

szinte az összes operátor, amelyet a PowerShell egyes adatelemeihez használunk, szintén tömbökkel fog működni, de némelyikük egy kicsit másképp működik, ha ilyen módon használjuk. Tehát vessünk egy pillantást a leggyakoribb operátorok, és hogyan lehet használni őket tömbök.,

– join

A-join operátor a PowerShell egyik leggyakrabban használt parancsa, rendkívül hasznos a tömbökkel való munka során. Használható iteratív módon a tömb elemein, hogy összekapcsolják őket egy tömb kimenetében.

Vegyünk egy példát. Először hozzon létre egy egyszerű tömböt:

$data = @(1,2,3,4)

majd használja-csatlakozzon kötőjel beillesztéséhez az egyes elemek között, és adja ki az eredményt:

$data -join '-'

amely visszatér “1-2-3-4”., A-join operátor határoló nélkül is használható, amelyben a tömbben lévő elemek elválaszthatatlan értékek sorozataként kerülnek kiadásra.

– tartalmaz

a-tartalmaz operátor működik tömbök nagyon hasonló módon annak használatát egyetlen adatpont. Ezzel ellenőrizheti, hogy egy tömb tartalmaz-e egy adott karakterláncot, és logikai értéket ad ki. Például:

 PS> $data = @('red','green','blue') PS> $data -contains 'green' True

Equalities

két operátor van az egyenlőség ellenőrzésére PowerShellben: -eq and-ne., Ha megszokta, hogy ezeket egyetlen értéken használja, az a mód, ahogyan ezek a tömbökkel kapcsolatban működnek, kissé furcsanak tűnhet. Ha például-eq-t használ, az operátor nem ad ki Logikai “True” – ot, hanem visszaadja a megfelelő objektumot.

például:

 PS> $data = @('red','green','blue') PS> $data -eq 'green' green

a-ne operátor ugyanúgy működik, kivéve, hogy megadja az összes olyan értéket, amely nem egyenlő a megadott értékkel., Tehát:

 PS> $data = @('red','green','blue') PS> $data -ne 'green' red blue

használhatja azonban az if () nyilatkozatot, hogy összehasonlítsa ezen operátorok kimenetét a várt kimenettel, és visszaadja a “True” vagy “False” kimenetet.

Hogyan adhatunk hozzá értékeket egy tömbhöz

az összes fenti utasítás után valószínűleg azon gondolkodik, hogy miért hagytuk ki az adatelemek hozzáadását egy tömbhöz. Ez azért van, mert erre nincs mód. A létrehozott tömb örökre azonos méretű marad, így annak érdekében, hogy nagyobb legyen, át kell másolnia egy új tömbbe, majd törölnie kell az eredetit.,

ez bonyolultnak hangzik, de a Powershell ezt a folyamatot elég egyszerű operátorok sorozatával kezeli. Ennek két fő módja van.

Array Addition

PowerShell adhat két tömböt együtt a ” + ” operátor, amely elrejti a komplexitás, amit a rendszer valójában csinál. Például, ha két teszt tömbök, mint ez:

 $first = @( 'Zero' 'One' ) $second = @( 'Two' 'Three' )

ezután add össze őket használatával:

 PS> $first + $second

Ez egy új tömb mind a négy értékek, valamint a kimeneti eredmények., Vegye figyelembe azonban, hogy ez az új tömb nem ad új nevet. Ehhez a + = operátort használjuk.

Plus egyenlő a

tömbök kombinálásával a fenti példában a “+” operátor használata helyett használhattuk volna a “+ = ” operátort, amely egy teljesen új tömböt ad nekünk:

 $first += 'Two, Three'

a parancs egyszerűnek tűnik, de elrejti, hogy a PowerShell valójában mit csinál itt. Az összes értéket lemásolja a $first-ból, és egy új tömböt készít, amely tartalmazza az extra értékeket. Ezután törli az eredeti tömb.,

Ez kissé problematikus, mert számításilag drága. Kis tömbökkel előfordulhat, hogy nem veszi észre, de nagy mennyiségű adat esetén ez a módszer gyorsan lezárhatja a rendszert. Ezért adtunk neked egy utat a probléma körül, lent.

Tömbtípusok

eddig a PowerShell alapértelmezett tömbjeivel foglalkoztunk. Bár a PowerShell akkoriban nem mondta el nekünk, minden eddig létrehozott tömb egy típusú, a] típusú. Ez a fajta tömb bármilyen típusú adatértéket tartalmazhat.,

erősen gépelt tömbök

vannak azonban olyan esetek, amikor korlátozni szeretné azokat az adattípusokat vagy objektumokat, amelyeket egy tömb csak egynek tarthat. Ezt egy erősen gépelt tömb használatával tehetjük meg, amely csak a megadott adattípust tartalmazza.

például egy olyan tömb létrehozásához, amely csak egész számokat vehet fel, a következőket használhatjuk:

 PS> ] $numbers = 1,2,3

ha megpróbálja rossz típusú adatértéket egy erősen gépelt tömbbe helyezni, akkor hibakódot ad vissza.

ArrayList

mint már említettük, elemek hozzáadása tömbök lehet egy szóváltás., Van azonban egy másik típusú gyűjtemény-ArrayList -, amely ezt elegánsan kezeli. Az ilyen típusú gyűjtemény használatához azonban meg kell hívnunk a. Net keretrendszert, amely néhány szerencsétlen kimenetet az utunkba dobhat.

ArrayList létrehozásához, majd elemek hozzáadásához futtassa a következőket:

 $myarray = ::new() $myArray.Add('Value')

itt használhatjuk az alapértelmezett. Net konstruktort egy új ArrayList létrehozásához,majd a-Add operátort használva elemeket adhat hozzá. Az operátor ott van, mert néha ezek a parancsok furcsa kimeneteket dobnak ki, amelyek összezavarhatják a kódot.,

tovább haladva

ezek a leggyakoribb tömb típusok a PowerShellben,de van még néhány. Ha PowerShell felhasználóként fejlődik, akkor hasznos az tömbök használata az egyenes tömbök helyett, de tisztában kell lennie azzal is, hogy ezt a típusú tömböt a fejlett felhasználók nem használják.

ehelyett a legtöbb tapasztalt kódoló egy általános listatípust, a List-t fogja használni. Ez a fajta lista egy kicsit bonyolultabb használni, mert egyenesen a C# – ból származik, de miután elsajátította, sokkal nagyobb rugalmasságot kínál, mint az eddig tárgyalt tömbök.,

Speciális Tömb Funkciók

amellett, hogy az alapvető funkciók már tartozó eddig is számos fejlettebb tömb funkciók, valamint néhány extra funkciót megjegyzés, ahogy elkezdi használni őket gyakrabban.

előre méretezett tömbök

a fenti tömbök létrehozásának szokásos módja olyan tömböt hoz létre, amelynek méretét a benne lévő elemek száma határozza meg. Az új ($size) konstruktor segítségével azonban létrehozhat egy meghatározott méretű tömböt.

ezt így teheti meg:

 $data = ]::new(4)

Ha fut egy .,count lekérdezés ezen a tömbben, akkor vissza “4”, Mert annak ellenére, hogy nincs benne adat, akkor töltse ki a teret 0. Ez valójában rendkívül hasznos, ha inicializálnia kell egy új tömböt, amely nullákkal van kitöltve, mert egy előre méretű tömb kezdetben 0-val lesz kitöltve.

szorzás tömbök

megszorozzuk az objektumokat egy tömbben – különösen húrok-van valami, ami összezavarja a legtöbb ember, amikor először meg kell csinálni., Láttuk rendkívül bonyolult, ha () szkriptek elérni ezt az eredményt, de van egy sokkal egyszerűbb módja:

 PS> $data = @('red','green','blue') PS> $data * 3

Igen, ez így van. Ez egy új tömböt hoz létre, amelynek minden értéke háromszor megismétlődik. Ezt a parancsot alternatív módon is felhasználhatja egy tömb nullákkal (vagy bármely más alapértelmezett értékkel) történő kitöltésére úgy, hogy egy tömböt készít a kiválasztott értékkel, majd annyiszor megszorozza, amennyit csak akar.

beágyazott tömbök

mint sok más programozási nyelv, a PowerShell támogatja a beágyazott tömböket., A PowerShellben ennek szokásos módja egy többdimenziós tömb használata. A legegyszerűbb példa erre egy kétdimenziós tömb létrehozása:

 $data = @(@(1,2,3),@(4,5,6),@(7,8,9)) $data2 = @( @(1,2,3), @(4,5,6), @(7,8,9) )

Az ezzel a paranccsal készített adatstruktúra egy klasszikus mátrix, amelyet más programozási nyelvekhez hasonlóan lehet kezelni. Például egy adott érték eléréséhez ebből a tömbből két dimenziót kell megadnia.,

például a “3” érték eléréséhez ezt használnánk:

 PS> $outside = 0 PS> $inside = 2 PS> $data 3

Ez a parancs bármilyen érték eléréséhez használható, de beágyazott konzolokat kell hozzáadnia a mátrix minden szintjéhez.

A végső szó

az összes fenti utasítás sok lehet azoknak a felhasználóknak, akik először jönnek a Powershellbe, de gondosan választották őket a nyelv megtanulásának módjaként. Kombinálásával a különböző technikákat, akkor lehet építeni erős szkriptek automatizálni sok a leggyakoribb-és a legtöbb időigényes – munka, amit csinál PowerShell.,

Ezek a készségek segítenek a PowerShell túllépésében is. A kiberbiztonság kezelésére használt leggyakoribb nyelvek közül sok, mint például a NetCat vagy az Nmap, ugyanazokat az elveket használja, mint a PowerShell. Tehát a PowerShell használata a kiberbiztonság javítása érdekében nagyszerű módja annak, hogy megtanuljuk, hogyan lehet általánosabban biztosítani a rendszereket.