Kaip naudoti „Powershell Get-Content“ ir „Foreach“ su pavyzdžiais

2021 m. birželio 17 d 16866 m Peržiūros „PowerShell Try Catch“ pavyzdžiai

Ši S zona moko, kaip sujungti „PowerShell Get-Content“ su „ForEach“ kilpa. Galite naudoti Get-Content, kad pateiktumėte tekstinio failo turinį, tada naudokite ForEach teiginį, norėdami pakartoti teksto failo turinį.





Yra 3 „PowerShell ForEach“ variantai. Yra ForEach teiginys ir ForEach metodas.
Be to, yra ForEach-Object Cmdlet.



Šis vadovas pradedamas aptariant komandą Get-Content – ​​jos sintaksę, parametrus ir kai kuriuos pavyzdžius.

Tada likusiose vadovo dalyse sužinosite, kaip naudoti 3 PowerShell ForEach ir Get-Content variantus. Apie kiekvieną ForEach variantą aptarsiu jo sintaksę.



Galiausiai parodysiu kelis pavyzdžius, kaip naudoti PowerShell ForEach variantą ir Get-Content.



Naršykite pranešimų temas

Komanda Get-Content: sintaksė, parametrai, pavyzdžiai

Komanda Get-Content: sintaksė, parametrai, pavyzdžiai

Kaip minėjau savo įžangoje, prieš naudodami „PowerShell ForEach“ failo turiniui kartoti, pirmiausia turite importuoti tekstinio failo turinį į „PowerShell“.



„Get-Content Cmdlet“ naudojama teksto failo turiniui įtraukti arba importuoti į „PowerShell“.



Šiame skyriuje apžvelgsime Get-Content sintaksę ir parametrus. Skyrių pabaigsiu keliais pavyzdžiais.

Komandos Get-Content sintaksė ir parametrai

Supaprastinta komandos Get-Content sintaksė yra…

|_+_|

„Get-Content“ turi daug daugiau parametrų. Nurodžiau dažniausiai naudojamus parametrus.

Naudoti - Kelias parametrą, kad nurodytumėte visą kelią () į tekstinį failą. Turite įtraukti tekstinio failo plėtinį (.txt).

The Kelias parametras yra 0 pozicijoje, todėl jo nurodyti nereikia. Galite tiesiog įvesti vertę iškart po Get-Content. Norėdami sužinoti daugiau apie „PowerShell“ parametrus, skaitykite mūsų vadovą – „PowerShell“ parametrų parametrų atributas

Get-Content komandų pavyzdžiai

Žemiau esančioje ekrano kopijoje yra serverių sąrašas. Norėdami importuoti tekstinio failo turinį į „PowerShell“, paleisiu toliau pateiktą komandą…

|_+_|

Komanda rodo serverių sąrašą tekstiniame faile.

Kaip naudoti „PowerShell ForEach“ pareiškimą su „Get-Content“.

Kaip naudoti „PowerShell ForEach Loop“ naudojant „Get-Content“.

Šiame skyriuje sužinosite, kaip nustatyti rezultatą Gauti turinį į Kiekvienam Kilpa. Tada viduje Kiekvienam Kilpų blokas, atlikti konkrečias užduotis.

Skyrius pradedamas aptariant PowerShell ForEach Loop sintaksę.

padidinti jautrumą prisilietimui galaktika s8

„PowerShell“ sintaksė kiekvienam teiginiui

„PowerShell ForEach“ pareiškimas atlieka operaciją su kiekvienu įvesties objektų rinkinio elementu. Šio vadovo tikslais operacija bus atliekama su tekstinio failo elementais.

ForEach teiginio sintaksė yra tokia:

|_+_|

Kaip ir tikėtasi, sintaksė prasidės „ForEach“. Tada po jo rašomi skliausteliuose „()“; ir galiausiai blokas „{}“.

Pirmajame šio vadovo skyriuje pateikiau pavyzdį, kaip importuoti tekstinio failo turinį Gauti turinį . Štai komanda…

|_+_|

Jei įtrauksime tai į ForEach pareiškimo sintaksę, ForEach teiginys bus atnaujintas, kaip parodyta toliau:

|_+_|

Atnaujintoje ForEach teiginio sintaksėje pakeičiau $kolekcija kintamasis su Get-Content D:PS-TutorialS ZonesS Zones-Servers.txt komandą.

Be to, šią komandą galime išsaugoti $kolekcija kintamasis…

|_+_|

Tada galime naudoti supaprastintą ForEach teiginio sintaksės versiją...

|_+_|

Norėdami sužinoti daugiau apie šį galingą PS teiginį, spustelėkite PowerShell ForEach: Sintaksė, parametrai, pavyzdžiai .

Likusiuose šio skyriaus poskyriuose pateiksiu daugiau pavyzdžių.

Kaip kartoti tekstinį failą naudojant „ForEach“ teiginį

Šiame poskyryje pridėsiu keletą komandų į ForEach teiginio komandų bloką. Čia yra atnaujintos komandos.

|_+_|

Jei paleidžiu scenarijų PowerShell ISE, jis rodo tekstinio failo turinį.

Pirmoje scenarijaus eilutėje naudojau Get-Content tekstinio failo turiniui importuoti į PowerShell; tada naudojau PowerShell ForEach teiginį, kad pakartočiau turinį ir surašyčiau juos su komanda write-host $item.

Kaip sujungti „PowerShell Get-ChildItem“, „Foreach Loop“ ir „Get-Content“

Jei aplanke yra keli tekstiniai failai, pirmiausia turite gauti visą kelią į tekstinius failus. Norėdami gauti visą tekstinių failų kelią, jums reikia komandos Get-ChildItem.

Norėdami tai iliustruoti, aplanke sukūriau du tekstinius failus. Žiūrėkite žemiau esančią ekrano kopiją…

Kaip sujungti „PowerShell Get-ChildItem“, „Foreach Loop“ ir „Get-Content“

Kaip jau minėjau eelier, pirmas žingsnis yra gauti kelią į visus aplanke esančius tekstinius failus. Štai komanda, kuri atlieka šį darbą…

|_+_|

Komandoje pateikiamas visas kelias į tekstinius failus…

Tačiau jei aplanke turite kitų elementų, pavyzdžiui, poaplankius ir kitų tipų failus, turite patobulinti komandą, kad būtų grąžinami tik tekstiniai failai...

|_+_| Komandos rezultatą išsaugojau kintamajame, kad sutrumpinčiau paskesnes komandas.

Dabar, kai turime kelius į visus aplanke esančius tekstinius failus, kitas veiksmas yra naudoti Get-Content, kad pateiktumėte kiekvieno tekstinio failo turinį. Tačiau, kadangi yra daugiau nei vienas tekstinis failas, turime naudoti ForEach teiginį.

|_+_|

Štai PowerShell ISE scenarijaus rezultatas…

Kaip sujungti „PowerShell Get-ChildItem“, „Foreach Loop“ ir „Get-Content“

Kaip sukurti aplankus su tekstinio failo turiniu

Šiame poskyryje sužinosite, kaip sukurti aplankus su tekstinio failo turiniu.

Norėdami tai parodyti, turiu tekstinį failą su pavadinimais.

Naudosiu Get-Content tekstinio failo turiniui importuoti į PowerShell; tada naudokite ForEach teiginių bloką, kad kartotumėte tekstinių failų turinį.

Galiausiai ForEach teiginių bloke naudosiu įvertinimas komanda sukurti aplankus su tekstinio failo turiniu.

Tačiau užuot atskiręs komandas, kaip darėme iki šiol, sujungsiu visas komandas. Štai scenarijus…

|_+_|

Šioje komandoje naudojau „Windows“ komandų eilutės komandas, CD ir mkdir . Čia yra „PowerShell“ komandos versija ...

|_+_|

Ir štai PoweShell ISE rezultatas:

Arba, jei nenorite, kad būtų rodoma informacija apie sukurtus aplankus, išveskite išvestį Naujas daiktas liepti Out-Null .

Scenarijus dabar atrodys taip…

|_+_|

Kaip padalinti, tada prisijungti prie tekstinio failo turinio su „Get-Content“ ir „Foreach Statement“.

Kai tyrinėjau šį straipsnį, aptikau tai stackoverflow.com klausimas. Klausimą uždavęs asmuo turi tekstinį failą su šiomis eilutėmis:

|_+_|

Tačiau asmuo nori pakeisti eilutes, kad atrodytų taip:

|_+_|

Norėdami pakartoti šią situaciją, sukūriau tekstinį failą su originaliomis eilutėmis. Tada sukūriau trumpą scenarijų, kuris pasieks reikiamą rezultatą.

Štai scenarijus.

|_+_|

Pirmoji ir antroji eilutės yra gana paprastos. 1 eilutėje aš išsaugojau tekstinio failo kelią į kintamąjį.

Tada 2 eilutėje aš naudojau Gauti turinį importuoti tekstinio failo turinį į PowerShell ir išsaugoti rezultatą kitame kintamajame.

Galiausiai 3, 4 ir 5 eilutėse panaudojau rezultatą Gauti turinį komanda PowerShell ForEach pareiškime. ForEach pareiškimo rezultatą išsaugojau kitame kintamajame.

Svarbiausias iš ForEach teiginio yra tai, ką turiu komandų bloke…

|_+_|

Pirmoji komandos dalis naudoja „PowerShell“ padalijimo metodą, kad sulaužytų tekstinio failo turinį. Štai komanda…

|_+_|

Ši komanda sulaužo eilutes tekstiniame faile | charakteris. Kad būtų lengviau su tuo susieti, čia pateikiamos originalios teksto failo eilutės.

|_+_|

Split komandos rezultatas sukuria šias atskiras eilutes:

|_+_|

Kai „PowerShell“ padalijimas sukuria tokias atskiras eilutes, kiekvienas elementas vaizduojamas pozicijos numeriu, pradedant nuo 0 (nulio). Taigi, galite pasiekti pirmąją eilutę, 80055555 su [0], antrasis su [1] ir pan.

Prieš paaiškindami kitą komandos dalį, pažiūrėkime, kokią išvestį norime pasiekti. Štai jis…

|_+_|

Jei sulaužytume šią išvestį naudodami „PowerShell Split“, tai pasieksime…

|_+_|

Jei palyginsite tai su rezultatu, kai išskaidome pradinę eilutę, pastebėsite, kad pradinio teksto failo 4 pozicijoje esanti poeilutė ( DCDOCS ) dabar yra 2 padėtyje. Kiekviena kita poeilutė išlaikė savo pradinę padėtį.

niūri aušros raupų statyba

Čia rodomas antrojo komandos bito darbas…

|_+_|

Ši komanda tiesiog reiškia…

|_+_| Įtraukiau kablelius (,), kad atskirčiau eilutes iliustracijos tikslais. Į komandą neįeina komos.

Iki šiol aš paaiškinau šią komandą..

|_+_|

Iki šios vietos…

|_+_|

Paskutinis bitas naudoja PowerShell Join Operator, kad įterptų pradinį simbolį | tarp naujos šios komandos sukurtos eilutės…

|_+_|

Paskutinėse keliose pastraipose paaiškinau 4 šio scenarijaus eilutę.

|_+_|

Galiausiai 6 eilutėje nusiunčiau naujos išsaugotos eilutės išvestį naujas failas kintamasis į Rinkinys-turinys . Rinkinys-turinys perrašo pradinį failą nauja eilute.

Tai puikus pavyzdys, kaip galite derinti Get-Content su PowerShell ForEach teiginiu!

Kaip naudoti „PowerShell“ kiekvienam metodui naudojant „Get-Content“.

Kaip naudoti „PowerShell“ kiekvienam metodui naudojant „Get-Content“.

ForEach metodas buvo pristatytas PowerShell 4 versijoje. Šis metodas suteikia PowerShell scenarijaus kūrėjams dar vieną būdą kartoti tekstinio failo turinį.

Šiame skyriuje sužinosite, kaip naudoti ForEach metodą su Get-Content, pateikdami kelis pavyzdžius.

Skyrius prasideda ForEach metodo sintaksė.

„PowerShell“ sintaksė kiekvienam metodui

„PowerShell ForEach Method“ sintaksė yra…

|_+_|

Prieiga prie objekto „ForEach“ metodo yra panaši į bet kurio kito „PowerShell“ metodo prieigą. Vienintelis skirtumas yra tas, kad ForEach metodas apima {} bloką () bloke.

Kaip sujungti PowerShell Get-ChildItem, kiekvieną metodą ir Get-Content

Šio vadovo skiltyje „ForEach Statement“ pasidalinau toliau pateiktu scenarijumi…

|_+_|

Naudotas scenarijus Get-ChildItem norėdami grąžinti visą kelią į tekstinius failus šiame aplanke...

Kaip sujungti PowerShell Get-ChildItem, kiekvieną metodą ir Get-Content

Čia yra ForEach Method ekvivalento scenarijus…

|_+_|

Kaip sukurti aplankus su tekstinio failo turiniu naudojant kiekvieną metodą

Panašiai kaip pavyzdyje paskutiniame poskyryje, šio vadovo skiltyje „ForEach Statement“ naudojau toliau pateiktą scenarijų...

|_+_|

Scenarijus naudojo „Get-Content“ ir „ForEach Statement“, kad sukurtų aplankus, naudodamas toliau esančioje ekrano kopijoje esančio tekstinio failo turinį...

Skirtingai nuo ForEach teiginio, kuris naudoja komandą…

|_+_|

„PowerShell ForEach“ metodas „Get-Content“ rezultate vadina „ForEach“ metodą, kaip šis…

|_+_|

Tada į () bloką įterpiame {} bloką ir paleidžiame Naujas daiktas komandą. Tačiau užuot naudoję $failo pavadinimas kintamasis, šį kartą naudoju $_ automatinį kintamąjį

|_+_|

Galutinė „ForEach Method“ scenarijaus versija atrodo taip…

|_+_|

Šį kartą noriu paleisti komandą PowerShell, o ne PowerShell ISE. Taigi, aš turėsiu visą scenarijų vienoje eilutėje…

|_+_|

Čia yra „PowerShell“ komanda ir sukurti aplankai. Taip pat įtraukiau tekstinio failo ekrano kopiją su aplankų pavadinimais…

Kaip sukurti aplankus su tekstinio failo turiniu naudojant kiekvieną metodą

Kaip padalinti, tada prisijungti prie tekstinio failo turinio naudodami „Gauti turinį ir kiekvieną metodą“.

Šio vadovo skiltyje „ForEach Statement“ pateikiau pavyzdį stackoverflow.com klausimas. Klausimą uždavęs asmuo nori pakeisti šią teksto failo eilutę...

|_+_|

Šiam…

|_+_|

Norėdami išspręsti problemą, sukūriau šį scenarijų, kuriame naudojamas Get-Content ir PowerShell ForEach teiginys…

|_+_|

Šiame vadovo skyriuje aptariame, kaip naudoti Gauti turinį ir ForEach Method, čia yra lygiavertis scenarijus su ForEach metodu…

|_+_|

Modifikuotas yra tas pats, išskyrus tai, kad šioje modifikuotoje versijoje ForEach teiginį pakeičiau ForEach metodu.

Kaip naudoti „PowerShell ForEach-Object Cmdlet“ su „Get-Content“.

Kaip naudoti „PowerShell ForEach-Object Cmdlet“ su „Get-Content“.

Šioje paskutinėje dalyje pakartosiu kai kuriuos pavyzdžius, kuriuos jau pateikiau pirmuosiuose dviejuose skyriuose.

Tačiau šiame skyriuje ForEach teiginį ir (arba) ForEach metodą pakeisiu ForEach-Object Cmdlet.

Skyrius prasideda ForEach-Object Cmdlet sintaksė

ForEach-Object cmdlet sintaksė

Yra dvi „ForEach-Object“ sintaksės. Štai jų supaprastintos versijos:

|_+_| |_+_|

ForEach-Object sintaksės gali atrodyti sudėtingos. Tačiau juo naudotis labai paprasta. Šiame vadove daugiausia dėmesio skirsime InputObject parametras.

Tai yra parametras, kuris įveda į „ForEach-Object“. Be to, InputObject taip pat gali būti siunčiami vamzdynu…

|_+_|

Kaip sukurti aplankus su tekstinio failo turiniu naudojant „ForEach-Object Cmdlet“.

Pirmajame ir antrame šio vadovo skyriuose sukūriau šiuos scenarijus.

|_+_| |_+_|

Pirmasis scenarijus naudoja Get-Content ForEach pareiškimą, kad sukurtų aplankus, naudodamas toliau esančioje ekrano kopijoje esančio tekstinio failo turinį...

Be to, antrasis scenarijus tai pačiai užduočiai atlikti naudoja Get-Content ForEach metodą.

Jei norite naudoti ForEach-Object Cmdlet, o ne ForEach pareiškimą arba ForEach metodą, scenarijus bus pakeistas, kaip parodyta toliau...

|_+_|

Kaip padalinti, tada sujungti tekstinio failo turinį su „Get-Content“ ir „ForEach-Object“ cmdlet

Skiltyse „ForEach Statement“ ir „ForEach Method“ sukūriau šiuos scenarijus, kad tai ištaisyčiau stackoverflow.com klausimas.

|_+_| |_+_|

Štai to paties scenarijaus ForEach-Object cmdlet versija:

|_+_|

Darbas su PowerShell Get-Content and ForEach: paskutinės mintys

Darbas su PowerShell Get-Content and ForEach: paskutinės mintys

Šiame vadove pateiktos temos gali būti klaidinančios, ypač dėl to, kad jis apėmė 3 „PowerShell ForEach“ variantus. Kad būtų lengviau suprasti, pateikiame lentelę, kurioje apibendrinamos šiame straipsnyje vartojamos sąvokos.

KlausimasUž kiekvieną pareiškimąKiekvienam metoduiForEach-Object cmdlet
Priima įvestį iš Get-Content
Kaip ji priima įvestį iš Get-Content?Pipeline | arba sąlygų bloke „ForEach Statement“.„PowerShell“ metodas .()Dujotiekis | arba per InputObject parametras
Kaip tai pakeičia įvestį iš Get-Content?Sukuria laikinąjį kintamąjį, vaizduojantį kiekvieną kolekcijos objektąAtstovauja kiekvienam kolekcijos objektui su PowerShell automatinio konvejerio kintamuoju $_Atstovauja kiekvienam kolekcijos objektui su PowerShell automatinio konvejerio kintamuoju $_
Scenarijaus pavyzdys?ForEach ($ failo pavadinimas Get-Content D:PS-Tutoriallist.txt) Out-Null
(Get-Content D:PS-Tutoriallist.txt).ForEach(
Naujas elementas - D kelias:PS-Tutorial - Pavadinimas $_ - Prekės tipo katalogas
)
Get-Content D:PS-Tutoriallist.txt | Kiekvienam objektui
Naujas elementas - D kelias:PS-Tutorial - Pavadinimas $_ - Prekės tipo katalogas

Štai ir viskas – mūsų atnaujintas vadovas, kaip naudoti „PowerShell Get-Content“ ir „ForEach“! Tikiuosi, kad jums tai buvo naudinga?

Jei jums tai buvo naudinga, balsuokite Taip į Ar šis įrašas buvo naudingas klausimas.

Arba galite užduoti klausimą, palikti komentarą arba pateikti daugiau atsiliepimų naudodami formą Palikite atsakymą, esančią šio puslapio pabaigoje.

Galiausiai, norėdami sužinoti daugiau „PowerShell tech S“ zonų, apsilankykite mūsų „Windows PowerShell“ vadovo puslapyje. Taip pat jums gali būti labai naudingas mūsų puslapis „Work from Home“.

Literatūra ir tolesnis skaitymas

  1. Kiekvienam objektui
  2. Gauti turinį
  3. apie_Foreach