PowerShell Hashtable Ultimate rokasgrāmata ar piemēriem

2021. gada 20. maijs 5546 Skati PowerShell Hashtable jūsu izcilais ceļvedis ar piemēriem

PowerShell hashtable ir kolekcijas vienumi un to vērtības. Preces tiek sauktas par atslēgām. Turklāt katrai hashtable atslēgai ir līdzvērtīga vērtība.





Būtībā PowerShell hashtable ir atslēgu/vērtību krātuves “tabula”.



Šajā S zonā es jums iemācīšu visu, kas jums jāzina par PowerShell hashtables. Pirmajā sadaļā tiek pētīta atšķirība starp hashtable un masīvu.

Pēc tam otrajā sadaļā, izmantojot Piesakies dalībai Cmdlet, es aizvedīšu jūs aiz hashtables pārsega.



Visbeidzot, es izpētīšu dažādus veidus, kā izmantot hashtables skriptu veidošanā.



Pārlūkojiet ziņu tēmas

PowerShell Hashtable vs PowerShell Array

PowerShell Hashtable vs PowerShell Array

Pirms ienirt Hashtables, es vēlos izskaidrot atšķirību starp Hashtables un Arrays. Šī atšķirība ir svarīga, jo abus jēdzienus var viegli sajaukt.



Šīs rokasgrāmatas ievadā es paskaidroju, ka hashtable ir atslēgu/vērtību krātuve. Turklāt hashtable ir kā tabula ar taustiņiem un vērtībām.



Gluži pretēji, PowerShell masīvs ir vērtību vai objektu kolekcija.

Galvenā atšķirība starp PowerShell hashtable un PowerShell masīvu ir tāda, ka jaucējtabula ir vienumu (atslēgu) un to vērtību kolekcija, savukārt masīvs ir tikai vienumu saraksts.

Īsam piemēram, tālāk minētie kodi ir jaucējtabulu un masīva piemēri — pirmais kods izveido jaucējtabulu, bet otrais kods izveido masīvu:

|_+_| |_+_| No koda piemēriem varat redzēt, ka jaucējtabula ir ietverta {}, bet masīvs ir ietverts ().

Tālāk esošajā ekrānuzņēmumā ir parādīti abu kodu rezultāti.

PowerShell Hashtable vs PowerShell Array

Ekrānuzņēmuma daļa, kas apzīmēta ar (1), ir hashtable rezultāts. Vai esat redzējis atslēgas/vērtības pāri?

Iepriekš minētajā piemērā atslēgas Root vērtība ir C:UsersvictoDocuments. Arī PSPProvider atslēgai ir vērtība FileSystem.

Visbeidzot, vārdam ir vērtība Dokuments.

samsung s7 Windows 10 draiveri

Turklāt ekrānuzņēmuma daļai ar apzīmējumu (2) ir masīva koda rezultāts. Kā paskaidrots iepriekš, tas ir tikai saraksts.

PowerShell Hashtable metodes un īpašības

PowerShell Hashtable metodes un īpašības

Ievadā es apsolīju jūs aizvest aiz PowerShell Hashtables pārsega. Tas būs īstais!

Šajā sadaļā es jums iemācīšu, kā izmantot Get-Member cmdlet, lai aplūkotu hashtables.

Kad pārveidojat PowerShell Hashtable rezultātu uz Piesakies dalībai , varēsiet pārskatīt pieejamos Metodes un Īpašības no Hashtable.

Atgriezīsimies pie mūsu pirmā pārsteidzīgā piemēra iepriekš:

|_+_|

Kopējiet kodu jaunā PowerShell ISE dokumentā. Pēc tam palaidiet kodu.

Pēc tam, lai redzētu pieejamos Metodes un Īpašības šajā hashtable palaidiet šo komandu tajā pašā PowerShell ISE.

|_+_|

Lai palaistu iepriekš minēto komandu, ielīmējiet to zem pēdējā koda. Pēc tam iezīmējiet to un nospiediet F8 vai noklikšķiniet uz iezīmētās ikonas.

PowerShell Hashtable metodes un īpašības

Komanda parādīs rezultātus PowerShell konsoles rūtī.

Pagaidām apskatiet rezultātu. Tam ir TypeName: System.Collections.Hashtable.

Tas apstiprina, ka objekti, kas ievadīti Get-Member cmdlet, ir Hashtable!

Nākamajās šīs sadaļas apakšsadaļās es jums parādīšu, kā izmantot PowerShell hashtable izplatītākās metodes un īpašības.

Kā pievienot vai noņemt vienumus esošajai Hashtable

Šajā sadaļā jūs uzzināsit, kā esošai PowerShell atsauces tabulai pievienot jaunus vienumus. Turklāt jūs arī uzzināsit, kā noņemt vienumu no esošas PowerShell hashtable.

Pirms iedziļinu tajā, vēlos pieminēt, ka varat izveidot arī tukšu hashtable. Pēc tam pievienojiet jaucējtabulai atslēgas/vērtības — vairāk par to vēlāk.

Atgriezties pie vienumu pievienošanas vai noņemšanas esošajiem PowerShell hastables — kad mēs palaistām $hashtable | Piesakies dalībai komandu, viena no rezultātā parādītajām metodēm ir Pievienot . Ir arī metode, Noņemt .

Skatiet tālāk izceltās ekrānuzņēmuma daļas:

PowerShell Hashtable metodes un īpašības

Pirms es parādīšu, kā izmantot šīs divas metodes, apskatīsim sākotnējo PowerShell hashtable kodu:

|_+_|

Hashtabulā ir 3 ieraksti. Šajā piemērā es pievienošu mapei Mani dokumenti citu atslēgu ar nosaukumu Apraksts ar vērtību Maps.

Lai pabeigtu šo uzdevumu, es izpildīšu tālāk norādīto komandu (tajā pašā PowerShell ISE konsolē, kurā es izpildīju iepriekšējās komandas)

|_+_| Ņemiet vērā, kā es izmantoju Pievienot Metode . Es pievienoju punktu (.) blakus mainīgajam, kas satur hashtable. Tad es iekļāvu metodi, Pievienot , kam seko (). Visbeidzot, es iekļāvu jauno atslēgas/vērtības pāri, ko vēlos pievienot hashtable.

Kad esat palaidis komandu, lai apstiprinātu, ka ir pievienota papildu atslēga, iezīmējiet to $hashtable un nospiediet F8.

|_+_|

Šeit ir rezultāta ekrānuzņēmums, kas apstiprina, ka ir pievienota jaunā atslēga/vērtība.

Turpinot, varat izmantot to pašu pieeju, lai noņemtu vērtību no PowerShell hashtable.

Lai noņemtu pēdējo atslēgu, ko pievienojām hashtable, palaidiet komandu, kas ir līdzīga pēdējai komandai. Šoreiz gan nomainiet Pievienot Metode ar Noņemt Metode.

Šeit ir komanda:

|_+_| The Noņemt Metode ietver tikai taustiņu . Jums nav jāiekļauj atslēga vērtību komandā.

Vispirms palaidiet iepriekš minēto komandu. Pēc tam, lai apstiprinātu, ka atslēga ir noņemta, iezīmējiet to $hashtable un nospiediet F8.

|_+_|

Komandas rezultāts apstiprina, ka atslēga ir noņemta!

PowerShell Hashtable metodes un rekvizīti — kā pievienot vai noņemt vienumus esošajai hashtable

Kā pārbaudīt, vai PowerShell Hashtable satur atslēgu

Kad mēs novadījām zemāk esošo hastable uz Piesakies dalībai Cmdlet, viena no parādītajām metodēm ir Satur atslēgu Metode – skatiet tālāk redzamo ekrānuzņēmumu.

|_+_|

The Satur atslēgu Metode var tikt izmantota ļoti daudzos veidos. Tomēr viens no šīs metodes izplatītākajiem lietojumiem ir izmantot to, lai pārbaudītu, vai jaucējtabulā ir atslēga, un, ja tā nav, pievienojiet atslēgu.

pārtraukt Windows 10 radītāju atjaunināšanu

Vēl viens pieteikums Satur atslēgu PowerShell jaucējtabulas metode ir vienkārši izmantot to, lai pārbaudītu, vai jaucējtabulā pastāv atslēgas nosaukums.

Lai pārbaudītu, vai PowerShell hashtable ir atslēga, izmantojot Satur atslēgu Metode, palaidiet tālāk norādīto komandu:

|_+_|

Šī komanda pārbauda, ​​vai mainīgajā $hashtable saglabātajā hashtable ir atslēga ar nosaukumu Apraksts. Komandas rezultāts parāda False.

PowerShell Hashtable metodes un īpašības — kā pārbaudīt, vai PowerShell Hashtable satur atslēgu

Lai pārbaudītu, vai apraksta atslēga pastāv pirms tās pievienošanas PowerShell hashtable, mums būs nepieciešama papildu kodu rinda iepriekšējai komandai.

Šeit ir uzlabotais kods.

|_+_|

Kods izmanto nosacījumu IF, lai pārbaudītu, vai jaucējtabulā ir atslēga ar nosaukumu Apraksts.

Tad, ja rezultāts ir False, IF priekšraksta komandas izpildes daļā mēs izmantojam Pievienot PowerShell jaucējtabulas metode atslēgas pievienošanai jaucējtabulai.

Tomēr, ja atslēga pastāv jaucējtabulā, IF priekšraksta daļā Else tiek parādīts ziņojums, informējot personu, kas izpildīja komandu, ka atslēga jau pastāv.

Pēc pēdējās komandas palaišanas iezīmējiet $hashtable mainīgs un palaist to atsevišķi. Rezultāts apstiprina, ka atslēga Apraksts tika pievienota mainīgajam, jo ​​tā neeksistēja.

Lai pārbaudītu, vai šis skripts darbojas, palaidiet to vēlreiz…

|_+_|

Šoreiz skripts nepievienoja atslēgu. Drīzāk tā atgrieza informāciju IF paziņojuma daļā Else - Atslēga jau pastāv jaucējtabulā .

PowerShell Hashtable metodes un īpašības — kā pārbaudīt, vai PowerShell hashtable satur atslēgu

Kā pārvērst PowerShell Hashtable par virkni

Pirmais solis, lai PowerShell hashtable pārveidotu par virkni, ir atgriezt jaucējtabulas atslēgu vērtības. Citiem vārdiem sakot, jūs konvertējat PowerShell hashtable par PowerShell masīvu.

Lai atgrieztu vērtības jaucējtabulā, zvaniet uz Vērtības hashtable īpašums.

Šeit ir komanda, kas atgriež vērtības jaucējtabulā:

|_+_|

Kad esat atgriezis vērtības PowerShell hashtable, nākamais solis ir $hashtable.Values ​​ievadīšana Out-String Komanda…

|_+_| Vēlāk šajā rokasgrāmatā jūs sapratīsit, cik svarīgi ir pārveidot PowerShell hashtable par virkni. Lai redzētu šīs iespējas praktisko pielietojumu reālajā SysAdmin skriptēšanā, lasiet tālāk.

Kā lietot PowerShell Hashtable GetEnumerator Metode

Vēl viena svarīga PowerShell hashtable metode ir GetEnumerator Metode.

Varat izmantot šo metodi, lai atdalītu jaucējtabulas atslēgas atsevišķās virknēs. Šeit ir komandas paraugs GetEnumerator Hashtable metode:

|_+_|

Kā redzat no iepriekš minētās komandas rezultāta, atslēgas un vērtības tiek atgrieztas atsevišķās galvenēs. Es tagad nevaru iedomāties lietojumprogrammu, taču, ja jums kādreiz vajadzēs sadalīt atslēgas PowerShell hashtable, jūs zināt, kā to izdarīt!

Kā saskaitīt PowerShell Hashtable vienumus

Ir vēl viens noderīgs jauktamais īpašums, Skaitīt . Kā norāda nosaukums, šis rekvizīts atgriež atslēgu skaitu jaucējtabulā.

Vērtības Īpašums, lai izsauktu Count Property, izmantojiet komandu, kas līdzīga tālāk norādītajai:

|_+_|

Komanda apstiprina, ka hashtable, $hashtable ir 4 atslēgas.

Kā saskaitīt PowerShell Hashtable vienumus

Kā izveidot tukšu PowerShell hashtable un pievienot atslēgas

Kā izveidot tukšu PowerShell hashtable un pievienot atslēgas

Līdz šim visi piemēri šajā S zonā ir vērsti uz PowerShell hashtable manipulēšanu ar esošajiem taustiņiem. Šajā sadaļā jūs uzzināsit, kā izveidot tukšu hashtable.

Pēc tam pievienojiet atslēgas hashtable.

Lai izveidotu tukšu PowerShell hashtable, vienkārši ievadiet @ zīme, kam seko {} iekavās. Šeit ir mainīgā saglabātas tukšas hashtable piemērs, Tukšs galds :

|_+_|

Lai apstiprinātu, ka hashtable ir izveidota bez vērtībām, palaidiet iepriekšējo komandu. Pēc tam palaidiet mainīgo atsevišķi.

|_+_|

Nākamais solis ir izmantot Pievienot metodi, kas aprakstīta iepriekš šajā rokasgrāmatā, lai pievienotu atslēgas/vērtības hashtable. Šajā piemērā es pievienošu atslēgu, ko sauc Vārds , ar vērtību Dokuments .

Šeit ir komanda, lai veiktu šo uzdevumu.

|_+_|

Visbeidzot, lai apstiprinātu, ka vērtības ir pievienotas veiksmīgi, palaidiet mainīgo $Emptyhashtable:

|_+_|

Pēdējā komanda apstiprina, ka vērtības ir pievienotas veiksmīgi:

Kā izveidot PowerShell Hashtable ar vairākām vērtībām un vienu atslēgu

Kā izveidot PowerShell Hashtable ar vairākām vērtībām un vienu atslēgu

Visos līdz šim aplūkotajos piemēros PowerShell hashtable ir viens atslēgas/vērtības pāris. Tomēr ir gadījumi, kad jaucējtabulā var būt nepieciešama viena atslēga ar vairākām vērtībām.

Šajā gadījumā jūs faktiski vēlaties izveidot hashtable ar masīviem kā vērtībām.

Sākumā es domāju, ka labāk ir parādīt kodus, ko izmantoju, lai atšķirtu hashtable no masīva.

|_+_| |_+_|

Tātad, lai izveidotu PowerShell hashtable ar vienu taustiņu un vairākām vērtībām, palaidiet skriptu, kas līdzīgs šim:

|_+_|

Iepriekš minētajā skriptā LogName ir jaucējkoda atslēga, kamēr atslēgai ir piešķirtas vērtības System, Application un Security. Mēs esam izveidojuši vienu ātru atslēgu ar vairākām vērtībām.

Lai uzskaitītu atsevišķās vērtības LogName taustiņu, palaidiet tālāk norādīto komandu:

|_+_|

Zemāk redzamā ekrānuzņēmuma daļa ar apzīmējumu (1) ir jaucējtabulas rezultāts, $hashtableWithArrays . Turklāt daļa, kas apzīmēta ar (2), parāda rezultātu $hashtableWithArrays.Values komandu.

kurš ir savienots ar manu wifi mac

Ja esat pazīstams ar Windows notikumu žurnāliem — sistēma, lietojumprogramma un drošība — ir Windows notikumu žurnālu nosaukumi.

Nākamajā sadaļā es jums parādīšu, kā izmantot PowerShell ForEach cilpu, lai atkārtotu iepriekš minēto jaucējtabulu un palaistu Get-EventLog komanda šajos 3 notikumu žurnālos, izmantojot vienu PowerShell skriptu.

Kā atkārtot PowerShell Hashtable ar ForEach cilpu

Kā atkārtot PowerShell Hashtable ar ForEach

Pēdējā sadaļā es izveidoju vienas atslēgas PowerShell hashtable ar vairākām vērtībām.

Šīs sadaļas piemērā esmu mainījis mainīgo, kurā tika saglabāta hashtable uz LogNameKeys . Šeit ir atjauninātais skripts.

|_+_|

Šajā sadaļā es jums iemācīšu, kā lietot Katram lai cilpu cauri vērtībām, kas saglabātas mapē LogName taustiņu un palaidiet Get-EventLog komandu.

Lai ātri apgūtu PowerShell ForEach atsvaidzināšanas kursu, tālāk ir sniegta PowerShell ForEach komandas vispārējā sintakse:

|_+_|

Ja lietojat iepriekš minēto sintaksi mūsu LogNames hashtable, atjauninātā komanda izskatīsies šādi:

Rindas, kas sākas ar #, ir PowerShell komentāri. |_+_|

Pirmā skripta daļa ir tas pats skripts, kas izveido vienas atslēgas PowerShell hashtable ar vairākām vērtībām. Šeit ir skripts:

|_+_|

Otrajā skripta daļā es konvertēju ($LogNameKeys.Values) saglabātās vērtības virknēs un saglabāju rezultātu citā mainīgajā, LogNameKeysAsStrings .

|_+_|

Visbeidzot, trešajā skripta daļā tiek ieviesta ForEach cilpa:

|_+_|

Šajā skripta daļā mēs piedāvājam PowerShell ņemt katru vērtību, kas saglabāta LogName atslēga ( $LogNameKeysAsStrings ) – šo individuālo vērtību īslaicīgi saglabā mainīgajā LogNameKey – pēc tam izmantojiet temporālo mainīgo, lai palaistu Get-EventLog komandu.

Es iekļāvu Jaunākās parametrs Get-EventLog komandu ar vērtību 5, lai komanda atgrieztu pēdējos 5 katra notikumu žurnāla ierakstus. Aplūkojot PowerShell skriptu, tas var izskatīties sarežģīti. Tomēr, ja paskatās uzmanīgi, tas parasti ir ļoti viegli.

Tagad kopējiet tālāk esošo skriptu jaunā PowerShell ISE dokumentā un palaidiet to.

Atveriet PowerShell ISE kā administratoru. Ja neatvērsit PowerShell ISE kā administratoru, saņemsit piekļuves kļūdu ziņojumus. |_+_|

Tālāk esošajā ekrānuzņēmumā tika parādīts skripta rezultāts. Rezultātu rūtī ir 15 rindas, kas atspoguļo 5 sistēmas, lietojumprogrammu, drošības notikumu žurnālus.

Kā pielāgot pārskatu, izmantojot PowerShell Hashtable un Select-Object

Kā pielāgot pārskatu, izmantojot PowerShell Hashtable un Select-Object

Pēdējā sadaļā mēs izveidojām PowerShell skriptu, kas izvelk Windows notikumu žurnāla pārskatu. Šeit ir pārskata ekrānuzņēmums

kā mainīt nesaskaņas teksta krāsu

Skripta noklusējuma izvadei ir 5 kolonnas - Indekss , Laiks , EntryType , Avots , InstanceID , un Ziņa . Ja sūtāt to kā pārskatu, iespējams, vēlēsities mainīt šo kolonnu nosaukumus uz viegli saprotamiem nosaukumiem.

Šeit ir skripts no pēdējās sadaļas.

Skripts ir nedaudz pārveidots. Man tagad ir mainīgais, EventLogReport kas saglabā ForEach cilpas izvadi. Kāpēc tas ir nepieciešams, es paskaidrošu vēlāk. |_+_|

Lai mainītu kolonnu galvenes nosaukumus no šī skripta, mēs izveidosim Get-EventLog komanda uz a Select-Object komandu.

Pēc tam programmā izveidojiet PowerShell hashtable Select-Object komanda, kas maina kolonnu nosaukumus. Šeit ir modificēts skripts, kas veic burvju darbību.

|_+_|

Skripts šķiet daudz sarežģītāks, nekā tas patiesībā ir. Tomēr, ja koncentrējaties uz skripta daļu pēc Select-Object, būs viegli pamanīt atšķirību starp šo skriptu un iepriekšējo kopiju.

Konkrēti, es iekļāvu hashtables Select-Object koda bloks. Katrs hashtable pielāgo izvadi Get-EventLog komandu.

Šeit ir paraugs hashtable no Select-Object bloķēt:

|_+_|

Kā parasti, PowerShell hashtable ir divi elementi. Galvenais ir Vārds , vērtība ir Izteiksme .

Vēl viena svarīga lieta, kas jāņem vērā, ir katras hashtable beigās Select-Object bloks, ir komats (,).

Visbeidzot, šeit ir PowerShell galīgā skripta rezultāts:

Iepriekš solīju paskaidrot, kāpēc ieviesu $EventLogReport mainīgais, lai saglabātu ForEach cilpas izvadi. Bez šī mainīgā gala rezultātā tiks parādīti 3 atsevišķi rezultāti katram no 3 notikumu žurnāliem. Tomēr, saglabājot visus rezultātus mainīgajā, es varēju šo mainīgo ievadīt Format-Table — tas parāda visu rezultātu kā vienu tabulu. Šeit ir komanda, kas veica burvju darbību. |_+_|

Kā eksportēt PowerShell Hashtable uz CSV

Kā eksportēt PowerShell Hashtable uz CSV

Šajā pēdējā sadaļā jūs uzzināsit, kā eksportēt PowerShell hashtable uz CSV.

Pirmajā šīs sadaļas piemērā es jums parādīšu, kā eksportēt šo hashtabe uz CSV.

|_+_|

Lai veiksmīgi eksportētu šo PowerShell hashtable uz CSV failu, jums ir jāizmanto GetEnumerator Metode (izrunāta iepriekš), lai uzskaitītu vērtības. Pretējā gadījumā faktiskie atslēgu/vērtību pāri netiks eksportēti.

Šeit ir modificēts skripts, kas eksportē hashtable saglabāto mapē hashtable mainīgais CSV failā.

|_+_|

Iepazīstināja ar zemāk esošo skriptu:

|_+_|

Skripts ietver GetEnumerator Metode hashtabulā. Pēc tam novada izvadi uz Select-Object komandu.

Visbeidzot, es cauruļu izvadi Select-Object komandai Eksportēt-Csv komandu. Lai lasītu vairāk par to, kā lietot Eksportēt-Csv Cmdlet, izlasiet mūsu rokasgrāmatu — Powershell NoTypeInformation: lietojumprogrammas un piemēri.

Palaižot šo skriptu, tas izveido CSV failu, ko sauc hashtable.csv , jūsu norādītajā ceļā. CSV faila izvadei skatiet tālāk redzamo ekrānuzņēmumu.

|_+_|

Otrajā piemērā es eksportēšu pēdējā sadaļā izveidotā skripta izvadi - notikumu žurnāla skriptu - uz CSV failu.

Šeit ir skripts. Lai eksportētu pārskatu uz CSV, šī skripta beigās es pievienoju kodu zem šī.

|_+_| |_+_|

Kods izvada izvadi Katram cilpa – saglabāts mapē EventLogReport mainīgais – uz Eksportēt-Csv komanda . Ģenerētais CSV fails ir parādīts zemāk esošajā ekrānuzņēmumā.

Tas ir viss — visaptverošs ceļvedis par PowerShell hashtable! Es ceru, ka jums tas noderēja?

Ja jums tas šķita noderīgi, lūdzu, balsojiet uz Vai šī ziņa bija noderīgs jautājums tālāk.

Varat arī uzdot jautājumu, atstāt komentāru vai sniegt papildu atsauksmes, izmantojot veidlapu Atstājiet atbildi, kas atrodas šīs lapas beigās.

Visbeidzot, lai iegūtu vairāk PowerShell tehnoloģiju S zonu, apmeklējiet mūsu Windows PowerShell pamācību lapu. Iespējams, jums ļoti noderēs arī mūsu lapa Work from Home.

Atsauces un turpmākā literatūra

  1. Viss, ko vēlējāties uzzināt par hashtables
  2. Apvienojiet masīvus un jaucējtabulas programmā PowerShell, lai gūtu prieku un peļņu
  3. Par hash tabulām