Articles

PowerShell Array Guide: Kuinka käyttää ja luoda

matriisit ovat PowerShellin perusominaisuus. Matriisit mahdollistavat nielemään, manipuloida ja tuottaa todellisia tietorakenteita (eikä vain raaka Jouset). Tämä ominaisuus tekee Powershellista erilaisen ja hyödyllisemmän kuin muut skriptauskielet.

tässä artikkelissa selitämme, mitä ryhmät ovat ja miten niitä käytetään Powershellissa. Näytämme ensin, miten luodaan ryhmät Powershellissa, ja sitten miten käyttää perustoimintoja manipuloida niitä., Sitten me tarkastelemme useita erilaisia taulukoita, ja tutkia joitakin hienovaraisempia ominaisuuksia niistä.

Hanki Ilmainen PowerShell ja Active Directory Essentials Video-Kurssi

suosittelen tätä sekä uusia ja kehittyneitä PowerShell-käyttäjille. Mainostyökalun rakentaminen on loistava oppimiskokemus.

tavoitteenamme on antaa sinulle hyvä maadoitus työskentely taulukot PowerShell. Kun olet oppinut nämä perusasiat, voit tarkastella kurssia PowerShell oppia lisää.,

  • Array Perusteet
  • Ryhmät Esineet
  • Toimijoiden Taulukot
  • Miten Lisätä Arvoja Array
  • Array Tyyppejä
  • Lisäasetukset Array Toiminnot

PowerShell Taulukot

Taulukot ovat yhteinen piirre lähes kaikki ohjelmointikielet. Ne ovat tietorakenne, joka toimii useiden tietojen keräämisenä. Kun työskentelee array, voit joko käyttää samaa komentoa suorittaa saman toiminnon kunkin kohteen sisällä array, tai käyttää ja muokata yksittäisiä elementtejä käyttäen indeksiä.,

Powershellissa olevat matriisit voivat sisältää yhden tai useamman kappaleen. Kohde voi olla merkkijono, kokonaisluku, objekti tai jopa toinen array, ja yksi array voi sisältää minkä tahansa yhdistelmän näistä kohteista. Jokaisella näistä eristä on indeksi, joka alkaa aina (joskus hämmentävästi) 0. Joten ensimmäinen erä array annetaan indeksi 0, toinen indeksoidaan 1, ja niin edelleen.,

PowerShell taulukot ovat niin olennainen osa PowerShell, että ne näkyvät joka PowerShell opetusohjelma siellä, ja hyvä tieto siitä, miten työskennellä heidän kanssaan on kriittinen monia näkökohtia käyttämällä PowerShell, mistä määrittäminen Office 365: ssä käyttämällä PowerShell varten Pentesting.

Esimerkki PowerShell Array

helpoin tapa havainnollistaa, mitä array on ottaa esimerkin. Tehdään joukko, joka edustaa hedelmäkulhoa.,

On olemassa useita tapoja luoda taulukot Powershell, mutta helpoin on käyttää tätä komentoa:

@()

Tämä luo tyhjä jono. Tyhjä array ei kuitenkaan ole kovin hyödyllinen, joten lisätään joitakin hedelmiä uuteen array. Nämä esitetään tekstikielinä. Voit tehdä niin, suorita tämä komento

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

Tämä on nimi array ”hedelmiä”, ja lisää kolme kohteita sitä., Nähdä, että tämä on toiminut, voit lukea array käyttäen tätä komentoa:

PS /Users/yourname> $fruit

Joka nyt palaa:

 Apples Oranges Bananas

Kuten näette, tämä joukko on ryhmä yksittäisiä tietoja. PowerShell automaattisesti indeksi heitä, niin kuin olemme edellä: ”Apple” on indeksoitu 0, ”Appelsiinit” 1, ja ”Banaanit”, kuten 2.

Tämä esimerkki saattaa saada sen näyttämään siltä, että matriisit ovat melko yksinkertaisia esineitä, ja tavallaan ne ovat. Niiden yksinkertaisuus on kuitenkin myös se, mikä tekee niistä niin joustavia, voimakkaita esineitä., Tässä oppaassa saat maistaa, mitä voit tehdä matriiseilla.

Array Fundamentals

tässä osiossa tarkastellaan perustavimpia tapoja luoda ja työskennellä matriisien kanssa Powershellissa.

luo Array

First, we ’ ll create an array. Standardi tapa tehdä tämä on käyttää @(), vaikka on olemassa muita tapoja.

nyt luodaan ”data” – niminen joukko. Tätä varten suorita:

$data = @()

tämä array on tällä hetkellä tyhjä, koska emme ole määritelleet sille mitään tietoja., Tarkistaa, kuinka monta kohdetta ovat array, voimme käyttää count-funktio:

$data.count

tällä hetkellä, palauttaa 0, koska ei ole kohteita meidän array. Tehdä matriisi, jossa on joitakin tiedot siitä, että me laittaa nämä tiedot sulkujen sisään sen jälkeen, kun @:

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

Suorita sama count-funktio nyt, ja näet, että siellä on 4 kohteita tässä array. Nähdä näitä kohteita uudelleen, voimme vain vedota array:

$data

Joka listaa kohteita, me laittaa array.,

käyttökohteet

nyt meillä on array, haluamme käyttää kohteita siitä. Tähän on useita tapoja. Ensimmäinen on käyttää indeksin kohteita array. Kuten aiemmin sanoimme, indeksit alkavat 0, joten hakea ensimmäisen kohteen meidän array meidän täytyy kertoa PowerShell tarkastella kohteen, jonka indeksi on nolla. Teemme sen komennolla:

$data

Tämä on paluu ”nolla”, koska se oli ensimmäinen merkkijono me laittaa meidän array.,

Voimme myös laajentaa tätä syntaksia, palauttaa useita kohteita samaan array, vain laittamalla enemmän indeksit sama komento. Esimerkiksi run:

$data

Tämä palauttaa ”Zero Two Three”. Tuotteet palautetaan samassa järjestyksessä kuin olet syöttänyt indeksit. Voit myös käyttää muita syntaksia palauttaa joukon kohteita array. Esimerkiksi:

$data

palauttaa kaikki erät indeksillä 1-3 (inclusive)., Ja:

$data

palaa viimeisen kohteen array: negatiivinen määrä kertoo PowerShell laskea taaksepäin taulukon loppuun, joten tässä tapauksessa, tämä komento palauttaa ”Kolme”, viimeinen erä meidän testi array.

Muuttuvat Kohteet

samaa menetelmää voidaan käyttää, päivittää kohteita array. Esimerkiksi, voit päivittää kohteen, jonka indeksi on 2 (muista, että tämä on kolmannen kohteen array), voimme ajaa:

$data = 'second'

Tämä antaa meille suora pääsy kohteita sisällä array.,

Iteroitava Toimia

Yksi tehokkaimmista ominaisuuksista PowerShell (ja itse asiassa minkä tahansa command-line interface) on kyky suorittaa saman toimen kaikki kohteet array. Tähän on useita eri tapoja.

kaikkein perustavinta on käyttää putkea, joka on merkki/. Kun siirrät array putkeen, jokainen kohde array käsitellään erikseen. Kuten olemme huomauttaneet artikkelissamme PowerShell-esineistä ja dataputkistosta, tämä on usein yksinkertaisin tapa suorittaa iteroituja toimia.,

esimerkiksi, voit lisätä kuvauksen kunkin kohteen meidän array, voimme käyttää tätä komentoa:

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

Tämä komento kertoo PowerShell ottaa kohteita $tiedot yksi kerrallaan, ja sitten jokainen niistä lisää ”Kohde:” alkuun, jonka jälkeen alkuperäinen arvo.

On olemassa useita muita tapoja suorittaa iteroitava toimia PowerShell, joista monet on tuttu, jos olet käyttänyt muita ohjelmointikieliä: PowerShell sisältää ForEach silmukoita, silmukoita, ja Vaihtaa silmukoita. Lisätietoja näistä on Microsoft-dokumentaatiossa.,

objektien ryhmät

toistaiseksi olemme työskennelleet perusdataa sisältävän matriisin kanssa: jono. Matriisit voivat kuitenkin sisältää myös esineitä, ja monet PowerShellin kaltaisten Office 365: n konfiguroinnin yleisimmistä käyttötavoista vaativat, että osaat työskennellä esineiden kanssa. Joten Katsotaanpa joitakin perus komentoja tehdä se.

luoden joukon objekteja

voimme luoda joukon objekteja samalla tavalla kuin teimme merkkijonojen kanssa @ () – funktion avulla., Esimerkiksi, tehdä testi luettelo työntekijöistä, Voimme käyttää:

useimmat cmdlets palauttaa joukko tämän tyyppinen, kun annat heille muuttujan työskennellä.

Accessing Esineitä Taulukot

prosessi me juoksi läpi ennen pääsyä yksittäisiä paloja tiedot voidaan yhtä lailla käyttää taulukot, jotka sisältävät esineitä., Esimerkiksi käynnissä:

$data

palaa:

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

Vaihtoehtoisesti, voimme käyttää ominaisuuksia yksittäisten kohteiden määrittämällä, mitkä kiinteistön haluaisimme saman komennon, kuten tämä:

$data.FirstName

Joka palaa ”Kevin”.

Päivittäminen Object Ominaisuuksia Taulukot

Menossa edelleen, sama syntaksi antaa meille valmiudet päivittää yksittäisiä ominaisuuksia sisällä esineitä, jotka järjestetään taulukot., Esimerkiksi:

$data.FirstName = 'Jay'

päivittää FirstName kiinteistön ensimmäinen erä meidän joukko ”Jay”.

Pääsy Jokaisen Kiinteistön Array of Objects

Vuonna useimmat ohjelmointikielet, meidän olisi käytettävä iteratiivinen prosessi (ks. edellä) käyttää kaikkia ominaisuuksia erilaisia esineitä. Voimme tehdä, että PowerShell sekä, tietenkin, suorittamalla:

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

Tämä palauttaa listan kaikkien Sukunimi ominaisuuksia meidän array, mutta se on laskennallisesti kallista ja vaikeaa kirjoittaa joka kerta, kun haluat nähdä nämä tiedot., Powershellissa on oikotie. Suorita tämä:

$data.LastName

Ja näet samalla listalla. PowerShell ottaa itse asiassa jokaisen kohteen vuorollaan, aivan kuten ennenkin, mutta se kätkee tämän monimutkaisuuden meiltä.

Toimijoiden Taulukot

Lähes kaikki toimijat, jotka käytämme yksittäisten tietojen kohteet PowerShell toimii myös taulukot, mutta jotkut niistä toimivat hieman eri tavalla, kun käytetään tällä tavalla. Joten katsotaanpa katsomaan yleisimpiä toimijoita, ja miten voit käyttää niitä taulukoissa.,

-join

the-join operator on yksi käytetyimmistä komennoista Powershellissa, ja se on erittäin hyödyllinen työskennellessään matriisien kanssa. Sitä voidaan käyttää iteratiivisesti kohteita array liittyä ne yhteen lähtö array.

otetaan esimerkki. Ensinnäkin, luoda yksinkertainen taulukko:

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

Ja sitten käyttää -liity lisää yhdysmerkki välillä kunkin kohteen, ja tuotos tulos:

$data -join '-'

Joka palaa ”1-2-3-4”., Liityntäoperaattoria voidaan käyttää myös ilman rajaajaa, jolloin matriisin kohteet voidaan tuottaa sarjana erottamattomia arvoja.

sisältää

– sisältää operaattori toimii taulukot hyvin samalla tavalla kuin sen käyttö yhdellä tietoja pistettä. Voit käyttää sitä tarkistaa, jos array sisältää tietyn merkkijonon, ja se tuottaa Boolean arvo. Esimerkiksi:

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

tasa-arvo

On olemassa kaksi operaattoria tarkistetaan tasa-PowerShell: -eq ja -ne., Jos olet kuitenkin tottunut käyttämään näitä yksittäisissä arvoissa, tapa, jolla nämä toimivat suhteessa matriiseihin, voi tuntua hieman oudolta. Jos käytät-taajuuskorjain, esimerkiksi, operaattori ei anna Boolean ”totta”, vaan palauttaa objektin, joka vastaa.

esimerkiksi:

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

– ne operaattori toimii samaan tapaan, paitsi että se antaa sinulle kaikki arvot, jotka eivät ole yhtä suuri kuin määritelty arvo., Niin:

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

Voit kuitenkin käyttää, jos() lausunto vertailla lähtö näiden toimijoiden kanssa odotettu tuotos, ja palauttaa ”True” tai ”False” tuotos.

kuinka lisätä arvoja matriisiin

kaikkien edellä mainittujen ohjeiden jälkeen, olet luultavasti miettinyt, miksi olemme jättäneet pois dataerien lisäämisen matriisiin. Se johtuu siitä, että sitä ei voi tehdä. Array, kun luotu, pysyy samankokoisena ikuisesti, ja niin, jotta se suurempi sinun täytyy kopioida sen Uusi array, ja poistaa alkuperäinen.,

se kuulostaa monimutkaiselta, mutta Powershell käsittelee tämän prosessin sinulle käyttäen useita melko yksinkertaisia operaattoreita. Tähän on kaksi pääasiallista tapaa.

Array Lisäksi

PowerShell voi lisätä kaksi paneelit yhdessä käyttämällä ” + ” – operaattori, joka piilottaa monimutkaisuus, mitä järjestelmä tekee. Esimerkiksi, jos teet kaksi testi paneelit, kuten tämä:

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

Voit lisätä ne yhdessä käyttäen vain:

 PS> $first + $second

Tämä tekee uuden taulukon, jossa kaikki neljä arvoa, ja tulostaa tulokset., Huomaa kuitenkin, että se ei anna tälle uudelle ryhmälle uutta nimeä. Voit tehdä sen, käytämme + = operaattori.

Plus Vastaa Yhdistämällä Paneelit

sen Sijaan käyttää ” + ”- operaattori yllä olevassa esimerkissä olisimme voineet käyttää ”+ = ” – operaattori, joka antaa meille kokonaan uuden array:

 $first += 'Two, Three'

komento näyttää yksinkertainen, mutta se on piilossa, mitä PowerShell on itse asiassa täällä. Se kopioi kaikki arvot $ensimmäinen, ja tekee uuden taulukon, joka sisältää ylimääräisiä arvoja. Sitten se poistaa alkuperäisen array.,

Tämä on hieman ongelmallista, koska se on laskennallisesti kallista. Pienet ryhmät, et ehkä huomaa, mutta suuria määriä tietoja tämä menetelmä voi nopeasti lukita järjestelmän. Siksi olemme antaneet sinulle keinon kiertää tämä ongelma, alla.

Array Tyyppejä

tähän mennessä olemme olleet tekemisissä default taulukot PowerShell. Vaikka PowerShell ei tuolloin kertonut, kaikki tähän mennessä luomamme matriisit ovat yhtä tyyppiä,] tyyppiä. Tämäntyyppinen array voi pitää minkä tahansa tiedon arvon.,

Erittäin Kirjoitetaan Taulukot

Kuitenkin, on aikoja, kun haluat rajoittaa tyyppisiä tietoja tai esineitä, jotka array mahtuu vain yksi. Voimme tehdä tämän käyttämällä voimakkaasti tyypitettyä array, joka voi sisältää vain määritetyn tietotyypin.

esimerkiksi, tehdä array, joka voi vain ottaa kokonaislukuja, voimme käyttää:

 PS> ] $numbers = 1,2,3

Jos yrität laittaa väärän tyyppinen data-arvo osaksi voimakkaasti kirjoitetaan matriisi, se palauttaa virhekoodin.

ArrayList

kuten edellä on sanottu, kohteiden lisääminen matriiseihin voi olla vaivalloista., On kuitenkin olemassa toisenlainen kokoelma – ArrayList – joka hoitaa tämän tyylikkäämmin. Käyttääksemme tämäntyyppistä kokoelmaa meidän on kuitenkin vedottava. Net-kehykseen, joka voi heittää joitakin ikäviä ulostuloja tiellämme.

luo ArrayList, ja sitten lisätä kohteita se, suorita seuraava:

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

Tässä voimme käyttää oletuksena .Net konstruktori luo uuden ArrayList, ja sitten käyttää -Lisätä operaattorin lisätä kohteita se. Operaattori on siellä, koska joskus nämä komennot heittää pois outoja lähtöjä, jotka voivat sotkea koodin.,

menee pidemmälle

nämä ovat Powershellissa yleisimpiä matriisityyppejä, mutta niitä on muutama muukin. Jos olet kehittymässä PowerShell-käyttäjänä, on hyödyllistä alkaa käyttää Arraylistejä suorien matriisien sijaan, mutta sinun pitäisi myös olla tietoinen siitä, että kehittyneet käyttäjät eivät käytä tällaista array-järjestelmää.

sen sijaan kokeneimmat koodarit käyttävät geneeristä listatyyppiä nimeltä List. Tämän tyyppinen lista on hieman monimutkaisempi käyttää, koska se on johdettu suoraan C#, mutta kun olet oppinut sen, että se tarjoaa paljon enemmän joustavuutta kuin taulukot olemme keskustelleet tähän mennessä.,

Lisäasetukset Array Toiminnot

lisäksi perustoiminnot olemme tehneet tähän mennessä, on olemassa myös useita kehittyneempiä joukko toimintoja, ja joitakin lisäominaisuuksia huomata, kun alkaa käyttää niitä useammin.

Pre-Kokoinen Taulukot

standardi tapa luoda paneelit edellä on luoda array, joiden koko määräytyy määrä kohteita sitä. Voit kuitenkin luoda joukon tietyn koon käyttämällä uutta ($size)constructor.

Voit tehdä sen näin:

 $data = ]::new(4)

Jos suoritat .,laske kysely tähän array, se palauttaa ”4”, koska vaikka se ei ole tietoja siinä, se täyttää tilan 0. Tämä on itse asiassa erittäin hyödyllistä, jos haluat alustaa uuden taulukon, joka on täynnä nollia, koska pre-kokoinen taulukko on aluksi täynnä 0.

moninkertaistavat matriisit

moninkertaistavat objektit jonossa – ja erityisesti Jouset – on asia, joka hämmentää useimpia ihmisiä, kun heidän on ensin tehtävä se., Olemme nähneet äärimmäisen monimutkaisia jos() skriptejä tämän tuloksen saavuttamiseksi, mutta on paljon yksinkertaisempi tapa:

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

Yep, se on oikein. Tämä luo uuden taulukon, jossa jokainen arvo toistetaan kolme kertaa. Voit myös käyttää tätä komentoa vaihtoehtoisena tapana täyttää array nollilla (tai muulla oletusarvolla) tekemällä array valitsemallasi arvolla, ja sitten kertomalla sen niin monta kertaa kuin haluat.

sisäkkäiset matriisit

kuten monet muutkin ohjelmointikielet, PowerShell tukee sisäkkäisiä matriiseja., Tavallinen tapa tehdä tämä Powershellissa on käyttää moniulotteista matriisia. Yksinkertaisin esimerkki tästä on luoda kaksi-ulotteinen taulukko:

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

tietorakenne teet tämän komennon kanssa on klassinen matriisi, ja se voi olla työskennellyt kuin muissa ohjelmointikielissä. Esimerkiksi, päästä tietyn arvon tämän array, sinun täytyy määrittää kaksi ulottuvuutta.,

esimerkiksi, voit käyttää arvoa ”3”, emme voisi käyttää tätä:

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

Tämä komento voidaan käyttää minkä tahansa arvon, mutta sinun täytyy lisätä sisäkkäisiä suluissa päästä kunkin tason sisällä matriisin.

Lopullinen Sana

Kaikki ohjeet ennen saattaa olla paljon käyttäjiä, jotka ovat ensimmäisiä, tulevat PowerShell, mutta ne on huolella valittu tapa oppia kieltä. Yhdistämällä eri tekniikoita, voit rakentaa tehokkaita skriptejä automatisoida monia yleisimpiä-ja eniten aikaa vieviä-työtä teet PowerShell.,

nämä taidot auttavat myös menemään Powershellia pidemmälle. Monet yleisimmät kielet, joita käytetään kyberturvallisuuden hallintaan, kuten NetCat ja Nmap, käyttävät monia samoja periaatteita kuin PowerShell. PowerShellin käyttäminen kyberturvallisuuden parantamiseen on hyvä tapa oppia varmistamaan järjestelmäsi yleisemmin.