PowerShell Hashtable Ultimate juhend koos näidetega
PowerShelli räsitabel on kollektsiooni üksused ja nende väärtused. Üksusi nimetatakse võtmeteks. Lisaks on igal räsitabeli võtmel samaväärne väärtus.
Sisuliselt on PowerShelli räsitabel võtme/väärtuste salvestamise tabel.
Selles S-tsoonis õpetan teile kõike, mida peate PowerShelli räsitabelite kohta teadma. Esimene jaotis uurib erinevust räsitabeli ja massiivi vahel.
Seejärel kasutage teises jaotises nuppu Võta liikmeks Cmdlet, ma viin teid räsitabelite kapoti taha.
Lõpuks uurin erinevaid võimalusi räsitabelite kasutamiseks skriptimisel.
Sirvi postituste teemasid
- PowerShell Hashtable vs PowerShelli massiiv
- PowerShelli räsitabeli meetodid ja omadused
- Kuidas luua tühi PowerShelli räsitabel ja lisada võtmeid
- Kuidas luua PowerShelli räsitabelit mitme väärtuse ja ühe võtmega
- Kuidas korrata PowerShell Hashtable'i ForEach Loopiga
- Kuidas kohandada aruannet PowerShelli räsilaua ja objekti valimisega
- Kuidas eksportida PowerShell Hashtable CSV-vormingusse
- Viited ja lisalugemine
PowerShell Hashtable vs PowerShelli massiiv
Enne kui sukeldun Hashtablesi teemasse, tahan selgitada Hashtablesi ja Arrayde erinevust. See eristamine on oluline, kuna need kaks mõistet võivad kergesti segi minna.
Selle juhendi sissejuhatuses selgitasin, et räsitabel on võtmete/väärtuste salvestaja. Lisaks on räsitabel nagu võtmete ja väärtustega tabel.
Vastupidi, PowerShelli massiiv on väärtuste või objektide kogum.
Peamine erinevus PowerShelli räsitabeli ja PowerShelli massiivi vahel on see, et räsitabel on üksuste (võtmete) ja nende väärtuste kogum, samas kui massiiv on lihtsalt üksuste loend.
Kiire näitena on allolevad koodid näited räsitabelitest ja massiivist – esimene kood loob räsitabelid, teine kood aga massiivi:
|_+_| |_+_| Koodinäidetest näete, et kui räsitabel on ümbritsetud tähega {}, siis massiiv on ümbritsetud tähega ().Alloleval ekraanipildil kuvatakse kahe koodi tulemused.
Ekraanipildi osa, millel on silt (1), on räsitabeli tulemus. Kas olete võtme/väärtuse paari näinud?
Ülaltoodud näites on võtme Root väärtus C:UsersvictoDocuments. Samuti on PSProvideri võtmel väärtus nimega FileSystem.
Lõpuks on nime väärtuseks Dokumendiks.
Lisaks on ekraanipildi osal (2) massiivi koodi tulemus. Nagu varem selgitatud, on see lihtsalt nimekiri.
PowerShelli räsitabeli meetodid ja omadused
Sissejuhatuses lubasin viia teid PowerShell Hashtablesi kapoti taha. See on see!
Selles jaotises õpetan teile, kuidas kasutada Get-Member cmdleti räsitabelite taha vaatamiseks.
Kui suunate PowerShelli räsitabeli tulemuse Võta liikmeks , saate üle vaadata saadaolevad meetodid ja Omadused Hashtable'ist.
Tuleme tagasi meie ülaltoodud esimese kiire näite juurde:
|_+_|Kopeerige kood uude PowerShelli ISE dokumenti. Seejärel käivitage kood.
Seejärel, et näha saadaolevaid meetodid ja Omadused selles räsitabelis käivitage see käsk samas PowerShelli ISE-s.
|_+_|Ülaltoodud käsu käivitamiseks kleepige see viimase koodi alla. Seejärel tõstke see esile ja vajutage F8 või klõpsake esiletõstetud ikooni.
Käsk kuvab tulemused PowerShelli konsoolipaanil.
Praegu vaadake tulemust. Sellel on tüübinimi: System.Collections.Hashtable.
See kinnitab, et Get-Member cmdleti sisestatud objektid on räsitabel!
Selle jaotise järgmistes alajaotistes näitan teile, kuidas kasutada PowerShelli räsitabeli levinud meetodeid ja atribuute.
Kuidas olemasolevasse räsitabelisse üksusi lisada või eemaldada
Selles jaotises saate teada, kuidas olemasolevasse PowerShelli räsitabelisse uusi üksusi lisada. Lisaks saate teada, kuidas olemasolevast PowerShelli räsitabelist üksust eemaldada.
Enne sellesse sukeldumist tahan mainida, et saate luua ka tühja räsitabeli. Seejärel lisage räsitabelile võtmed/väärtused – sellest lähemalt hiljem.
Tagasi üksuste lisamise või eemaldamise juurde olemasolevatele PowerShelli hastablesidele – kui me käivitasime $hashtable | Võta liikmeks käsk, on üks tulemuses kuvatavatest meetoditest Lisama . On ka meetod, Eemalda .
Vaadake allpool oleva ekraanipildi esiletõstetud osi:
Enne kui näitan teile, kuidas neid kahte meetodit kasutada, vaatame esialgset PowerShelli räsitabeli koodi:
|_+_|Räsitabelis on 3 kirjet. Selles näites lisan oma kausta Minu dokumendid teise võtme nimega Kirjeldus väärtusega Maps.
Selle ülesande täitmiseks käivitan alloleva käsu (samal PowerShell ISE konsoolil, kus käivitasin eelmised käsud)
|_+_| Pange tähele, kuidas ma kasutasin lisa meetod . Lisan räsitabelit sisaldava muutuja kõrvale punkti (.). Seejärel lisasin meetodi, Lisama , millele järgneb (). Lõpuks lisasin uue võtme/väärtuse paari, mille tahan räsitabelisse lisada.Kui olete käsu käivitanud, tõstke lisavõtme lisamise kinnitamiseks esile $hashtable ja vajutage F8.
|_+_|Siin on tulemuse ekraanipilt, mis kinnitab, et uus võti/väärtus on lisatud.
Edasi liikudes saate sama lähenemisviisi kasutada väärtuse eemaldamiseks PowerShelli räsitabelist.
Viimase räsitabelisse lisatud võtme eemaldamiseks käivitage viimase käsuga sarnane käsk. Seekord aga asendada Lisama Meetod koos Eemalda meetod.
Siin on käsk:
|_+_| The Eemalda Meetod hõlmab ainult võti . Te ei pea võtit kaasa võtma väärtus käsus.Esmalt käivitage ülaltoodud käsk. Seejärel tõstke klahvi eemaldamise kinnitamiseks esile $hashtable ja vajutage F8.
|_+_|Käsu tulemus kinnitab, et võti on eemaldatud!
Kuidas kontrollida, kas PowerShelli räsitabel sisaldab võtit
Kui me toruga allolevat hastable to the Võta liikmeks Cmdlet, üks kuvatavatest meetoditest on Sisaldab võtit Meetod – vaadake allolevat ekraanipilti.
|_+_|
The Sisaldab võtit Meetodit saab kasutada väga mitmel viisil. Selle meetodi üks levinumaid rakendusi on aga selle kasutamine, et kontrollida, kas räsitabelis on võti olemas, ja kui seda pole, lisage võti.
Teine rakendus Sisaldab võtit PowerShelli räsitabeli meetod on kasutada seda lihtsalt selleks, et kontrollida, kas räsitabelis on võtme nimi.
Et kontrollida, kas PowerShelli räsitabelis on võti, kasutades Sisaldab võtit Meetod, käivitage allolev käsk:
|_+_|See käsk kontrollib, kas muutujasse $hashtable salvestatud räsitabelis on võti nimega Description. Käsu tulemus kuvab False.
Et kontrollida, kas kirjeldusvõti on olemas enne selle lisamist PowerShelli räsitabelisse, vajame eelmisele käsule täiendavat koodirida.
Siin on täiustatud kood.
|_+_|Kood kasutab tingimuslauset IF, et kontrollida, kas räsitabelis on võti nimega Description.
Seejärel, kui tulemus on Väär, kasutame IF-lause käsu täitmise osas Lisama PowerShelli räsitabeli meetod võtme lisamiseks räsitabelisse.
Kui aga võti on räsitabelis olemas, kuvame IF-lause Else osas teate, mis teavitab käsku käivitanud isikut, et võti on juba olemas.
Pärast viimase käsu käivitamist tõstke esile $hashtable muutuja ja käivitage see üksi. Tulemus kinnitab, et võti Description lisati muutujale, kuna seda ei eksisteerinud.
Skripti toimimise testimiseks käivitage see uuesti ...
|_+_|Seekord ei lisanud skript võtit. Pigem tagastas see teabe IF-i avalduse osas Else - Võti on räsitabelis juba olemas .
Kuidas teisendada PowerShelli räsitabel stringiks
Esimene samm PowerShelli räsitabeli stringiks teisendamiseks on räsitabeli võtmete väärtuste tagastamine. Teisisõnu teisendate PowerShelli räsitabeli PowerShelli massiiviks.
Räsitabeli väärtuste tagastamiseks helistage numbrile Väärtused räsitabeli omadus.
Siin on käsk, mis tagastab räsitabeli väärtused:
|_+_|Kui olete PowerShelli räsitabeli väärtused tagastanud, tuleb järgmiseks sammuks suunata $hashtable.Values faili Out-String Käsk…
|_+_| Hiljem selles juhendis mõistate PowerShelli räsitabeli stringiks teisendamise tähtsust. Selle praktilise rakenduse nägemiseks reaalses SysAdmini skriptimises lugege edasi.Kuidas kasutada PowerShell Hashtablei GetEnumerator meetod
Teine oluline PowerShelli räsitabeli meetod on GetEnumerator meetod.
Seda meetodit saate kasutada räsitabeli võtmete eraldamiseks üksikuteks stringideks. Siin on näidiskäsk GetEnumerator Räsitabeli meetod:
|_+_|Nagu ülaltoodud käsu tulemusest näha, tagastatakse võtmed ja väärtused üksikutes päistes. Ma ei suuda praegu rakendust välja mõelda, aga kui teil on kunagi vaja PowerShelli räsitabeli võtmed lahti võtta, siis teate, kuidas seda teha!
Kuidas lugeda PowerShelli räsitabeli üksusi
On veel üks kasulik räsitav atribuut, Count . Nagu nimigi viitab, tagastab see atribuut räsitabeli võtmete arvu.
Nagu Väärtused Atribuut Count Property kutsumiseks kasutage allolevaga sarnast käsku:
|_+_|Käsk kinnitab, et räsitabelil $hashtable on 4 võtit.
Kuidas luua tühi PowerShelli räsitabel ja lisada võtmeid
Seni on kõik selle S-tsooni näited keskendunud PowerShelli räsitabeli manipuleerimisele olemasolevate võtmetega. Sellest jaotisest saate teada, kuidas luua tühja räsitabelit.
Seejärel lisage räsitabelisse võtmed.
Tühja PowerShelli räsitabeli loomiseks sisestage lihtsalt @ märk, millele järgneb {} sulgudes. Siin on näide tühjast räsitabelist, mis on salvestatud muutujasse, Tühjendatav :
|_+_|Kinnitamaks, et räsitabel on loodud ilma väärtusteta, käivitage eelmine käsk. Seejärel käivitage muutuja iseseisvalt.
|_+_|Järgmine samm on kasutada Lisama meetod, mida selles juhendis varem käsitleti, et lisada räsitabelile võtmeid/väärtusi. Selles näites lisan võtme nimega Nimi , mille väärtus on Dokument .
Siin on käsk selle ülesande täitmiseks.
|_+_|Lõpuks, veendumaks, et väärtuste lisamine õnnestus, käivitage muutuja $Emptyhashtable:
|_+_|Viimane käsk kinnitab, et väärtuste lisamine õnnestus:
Kuidas luua PowerShelli räsitabelit mitme väärtuse ja ühe võtmega
Kõigis seni käsitletud näidetes on PowerShelli räsitabelil üks võtme/väärtuse paar. Siiski on olukordi, kus võib tekkida vajadus mitme väärtusega räsitabelites kasutada ühte võtit.
Sel juhul soovite tegelikult luua räsitabeli, mille väärtusteks on massiivid.
Alustuseks arvan, et parem on näidata teile koode, mida kasutasin räsitabeli eristamiseks massiivist.
|_+_| |_+_|Nii et ühe võtme ja mitme väärtusega PowerShelli räsitabeli loomiseks käivitage järgmine skript:
|_+_|Ülaltoodud skriptis LogiNimi on räsitav võti, samas kui võtmele on määratud väärtused System, Application ja Security. Tõhusalt oleme loonud ühe kiirvõtme, millel on mitu väärtust.
Üksikute väärtuste loetlemiseks LogiNimi klahvi, käivitage allolev käsk:
|_+_|Alloleva ekraanipildi osa (1) on räsitabeli tulemus, $hashtableWithArrays . Peale selle näitab (2) märgistatud osa tulemust $hashtableWithArrays.Values käsk.
Kui olete Windowsi sündmuste logidega tuttav – süsteem, rakendus ja turve – on Windowsi sündmuste logide nimed.
Järgmises jaotises näitan teile, kuidas kasutada PowerShelli ForEachi tsüklit ülaltoodud räsitabeli itereerimiseks ja käivitada Hangi sündmuselogi käsk nendes 3 sündmuste logis – kasutades ühte PowerShelli skripti.
Kuidas korrata PowerShell Hashtable'i ForEach Loopiga
Viimases jaotises lõin ühe võtmega mitme väärtusega PowerShelli räsitabeli.
cydia löökkatsekeha paigaldage cydia extender
Selle jaotise näite puhul olen muutnud räsitabelit salvestanud muutuja väärtuseks LogiNameKeys . Siin on värskendatud skript.
|_+_|Selles jaotises õpetan teile, kuidas seda kasutada Igaühele ahel salvestatud väärtuste sirvimiseks LogiNimi võti ja käivitage Hangi sündmuselogi käsk.
PowerShell ForEachi kiireks värskenduskursuseks on allpool PowerShell ForEachi käsu üldine süntaks:
|_+_|Kui rakendate ülaltoodud süntaksi meie Loginimed hashtable, näeb värskendatud käsk välja selline:
#-ga algavad read on PowerShelli kommentaarid. |_+_|Skripti esimene osa on sama skript, mis loob ühe võtmega mitme väärtusega PowerShelli räsitabeli. Siin on skript:
|_+_|Skripti teises osas teisendasin lahtrisse ($LogNameKeys.Values) salvestatud väärtused stringideks ja salvestasin tulemuse teise muutujasse, LogNameKeysAsStrings .
|_+_|Lõpuks tutvustatakse skripti kolmandas osas ForEachi silmust:
|_+_|Selles skripti osas käsime PowerShellil võtta iga faili salvestatud väärtuse LogiNimi võti ( $LogNameKeysAsStrings ) – salvestage see individuaalne väärtus ajutiselt muutujasse LogiNameKey – seejärel kasutage faili käivitamiseks ajalist muutujat Hangi sündmuselogi käsk.
Lisasin Uusim parameeter Hangi sündmuselogi käsu väärtusega 5, nii et käsk tagastab iga sündmuste logi viimased 5 kirjet. Kui vaatate PowerShelli skripti, võib see tunduda keeruline. Kui aga tähelepanelikult vaadata, on see tavaliselt väga lihtne.Nüüd kopeerige allolev skript uude PowerShell ISE dokumenti ja käivitage see.
Avage administraatorina PowerShell ISE. Kui te ei ava PowerShell ISE administraatorina, kuvatakse teile juurdepääsu tõrketeated. |_+_|Allolev ekraanipilt näitas skripti tulemust. Tulemuspaanil on 15 rida, mis esindavad 5 süsteemi, rakenduse ja turvalisuse sündmuste logi.
Kuidas kohandada aruannet PowerShelli räsilaua ja objekti valimisega
Viimases jaotises lõime PowerShelli skripti, mis tõmbab Windowsi sündmuste logi aruande. Siin on aruande ekraanipilt
Skripti vaikeväljundis on 5 veergu – Indeks , Aeg , EntryType , Allikas , InstanceID , ja Sõnum . Kui saadate selle aruandena, võiksite muuta need veergude nimed hõlpsasti arusaadavateks nimedeks.
Siin on skript viimasest jaotisest.
Skripti on veidi muudetud. Mul on nüüd muutuja, EventLogReport mis salvestab ForEachi tsükli väljundi. Miks see vajalik on, selgitan hiljem. |_+_|Selle skripti veerupäiste nimede muutmiseks sisestame toru Hangi sündmuselogi käsk a Select-Object käsk.
Seejärel looge rakenduses PowerShelli räsitabel Select-Object käsk, mis muudab veergude nimesid. Siin on muudetud skript, mis täidab maagiat.
|_+_|Skript tundub palju keerulisem kui see tegelikult on. Kui aga keskendute skripti osale pärast Select-Object, on selle skripti ja varasema koopia erinevust lihtne märgata.
Täpsemalt, lisasin räsitabelid Select-Object koodi plokk. Iga räsitabel kohandab väljundit Hangi sündmuselogi käsk.
Siin on räsitabeli näidis Select-Object plokk:
|_+_|Nagu tavaliselt, on PowerShelli räsitabelil kaks elementi. Võti on Nimi , väärtus on Väljendus .
Veel üks oluline asi, mida tuleb tähele panna, on see, et iga räsitabeli lõpus Select-Object plokk, on koma (,).
Lõpuks on siin PowerShelli lõpliku skripti tulemus:
Lubasin varem selgitada, miks tutvustasin $EventLogReport muutuja ForEachi tsükli väljundi salvestamiseks. Ilma selle muutujata kuvatakse lõpptulemuses 3 individuaalset tulemust iga kolme sündmuselogi kohta. Kuid salvestades kogu tulemused muutujasse, suutsin selle muutuja torustada vormingusse Format-Table – see kuvab kogu tulemuse ühe tabelina. Siin on käsk, mis maagia sooritas. |_+_|Kuidas eksportida PowerShell Hashtable CSV-vormingusse
Selles viimases jaotises saate teada, kuidas eksportida PowerShelli räsitabelit CSV-vormingusse.
Selle jaotise esimeses näites näitan teile, kuidas eksportida see hashtabe CSV-vormingusse.
|_+_|Selle PowerShelli räsitabeli edukaks eksportimiseks CSV-faili peate kasutama GetEnumerator Meetod (arutletud varem) väärtuste loetlemiseks. Vastasel juhul tegelikke võtme/väärtuse paare ei ekspordita.
Siin on muudetud skript, mis ekspordib faili salvestatud räsitabeli hashtable muutuja CSV-failiks.
|_+_|Tutvustas allolevat skripti:
|_+_|Skript sisaldab GetEnumerator meetod räsitabelis. Seejärel suunab väljundi torudesse Select-Object käsk.
Lõpuks ma toru väljund Select-Object käsk Ekspordi-Csv käsk. Kasutamise kohta lisateabe saamiseks Ekspordi-Csv Cmdlet, lugege meie juhendit – Powershell NoTypeInformation: rakendused ja näited .
Kui käivitate selle skripti, loob see CSV-faili nimega hashtable.csv , teie määratud teel. CSV-faili väljundi kohta vaadake allolevat ekraanipilti.
|_+_|
Teises näites ekspordin viimases jaotises loodud skripti väljundi – sündmuste logi skripti – CSV-faili.
Siin on skript. Aruande eksportimiseks CSV-vormingusse lisasin selle skripti lõppu selle alla koodi.
|_+_| |_+_|Kood edastab väljundi Igaühele silmus – salvestatud EventLogReport muutuja – kuni Ekspordi-Csv käsk . Loodud CSV-fail on näidatud alloleval ekraanipildil.
See on kõik – põhjalik juhend PowerShelli räsitabeli kohta! Loodan, et leidsite sellest abi?
Kui leidsite sellest abi, hääletage lahkesti Jah Kas see postitus oli kasulik allpool olevale küsimusele.
Teise võimalusena võite esitada küsimuse, jätta kommentaari või anda rohkem tagasisidet, kasutades selle lehe lõpus asuvat vormi Jäta vastus.
Lõpuks, rohkemate PowerShelli tehniliste S-tsoonide vaatamiseks külastage meie Windows PowerShelli juhendi lehte. Samuti võib teile palju abi olla meie lehelt Work from Home.


