Jak používat Powershell Get-Content a forEach s příklady

17. června 2021 16866 Pohledy PowerShell Vyzkoušejte příklady Catch

Tato S zóna vás naučí, jak kombinovat PowerShell Get-Content se smyčkou ForEach. Můžete použít Get-Content k vypsání obsahu textového souboru a poté použít příkaz ForEach k iteraci obsahu textového souboru.





Existují 3 varianty PowerShell ForEach. Existuje příkaz ForEach a metoda ForEach.
Kromě toho existuje rutina ForEach-Object.



Tato příručka začíná popisem příkazu Get-Content – ​​jeho syntaxe, parametrů a několika příkladů.

Poté se ve zbývajících částech průvodce dozvíte, jak používat každou ze 3 variant PowerShell ForEach a Get-Content. U každé varianty ForEach proberu její syntaxi.



Nakonec ukážu několik příkladů, jak používat variantu PowerShell ForEach a Get-Content.



Procházet témata příspěvků

Příkaz Get-Content: Syntaxe, parametry, příklady

Příkaz Get-Content: Syntaxe, parametry, příklady

Jak jsem zmínil ve svém úvodu, než budete moci použít PowerShell ForEach k iteraci obsahu souboru, musíte nejprve importovat obsah textového souboru do PowerShellu.



Rutina Get-Content se používá k zobrazení seznamu nebo importu obsahu textového souboru do prostředí PowerShell.



V této části se podíváme na syntaxi a parametry Get-Content. Část zakončím několika příklady.

Syntaxe a parametry příkazu Get-Content

Zjednodušená syntaxe příkazu Get-Content je…

|_+_|

Get-Content má mnohem více parametrů. Uvedl jsem běžně používané parametry.

Použijte – Cesta parametr k určení úplné cesty () k textovému souboru. Musíte zahrnout příponu textového souboru (.txt).

The Cesta parametr je na pozici 0, proto jej nemusíte zadávat. Stačí zadat hodnotu ihned po Get-Content. Chcete-li si přečíst více o parametrech PowerShellu, přečtěte si naši příručku – Atribut parametru parametru PowerShell

Příklady příkazů Get-Content

Níže uvedený snímek obrazovky je seznam serverů. Chcete-li importovat obsah textového souboru do PowerShellu, spustím příkaz níže…

|_+_|

Příkaz zobrazí seznam serverů v textovém souboru.

Jak používat PowerShell pro každý příkaz s Get-Content

Jak používat PowerShell pro každou smyčku s Get-Content

V této části se naučíte, jak vytvořit potrubí výsledek Získejte obsah do Pro každého Smyčka. Poté v rámci Pro každého Smyčka blok, provádět konkrétní úkoly.

Tato část začíná diskusí o syntaxi PowerShell ForEach Loop.

Syntaxe prostředí PowerShell pro každý příkaz

Příkaz PowerShell ForEach provádí operaci proti každé položce v kolekci vstupních objektů. Pro účely této příručky bude operace provedena s položkami v textovém souboru.

Syntaxe ForEach Statementu je:

|_+_|

Jak se očekávalo, syntaxe bude začínat „ForEach“. Poté následuje a se závorkami „()“; a nakonec blok „{}“.

V první části této příručky jsem uvedl příklad, jak importovat obsah textového souboru pomocí Získejte obsah . Zde je příkaz…

|_+_|

Pokud to zahrneme do syntaxe příkazu ForEach, bude příkaz ForEach aktualizován, jak je uvedeno níže:

|_+_|

V aktualizované syntaxi příkazu ForEach jsem nahradil $kolekce proměnná s Get-Content D:PS-TutorialS ZonesS Zones-Servers.txt příkaz.

Navíc můžeme tento příkaz uložit do $kolekce variabilní…

|_+_|

Potom můžeme použít zjednodušenou verzi syntaxe příkazu ForEach…

|_+_|

Chcete-li se dozvědět více o tomto výkonném příkazu PS, klikněte na PowerShell ForEach: Syntaxe, Parametry, Příklady .

Ve zbývajících podsekcích této části uvedu více příkladů.

Jak iterovat textový soubor s každým příkazem

V této podsekci přidám některé příkazy do příkazového bloku příkazu ForEach. Zde jsou aktualizované příkazy.

|_+_|

Pokud skript spustím v PowerShell ISE , zobrazí se obsah textového souboru.

V prvním řádku skriptu jsem pomocí Get-Content importoval obsah textového souboru do PowerShellu; pak jsem použil příkaz PowerShell ForEach k iteraci obsahu a jeho výpisu pomocí příkazu write-host $item.

Jak zkombinovat PowerShell Get-ChildItem, pro každou smyčku a Get-Content

Pokud máte ve složce více textových souborů, musíte nejprve získat úplnou cestu k textovým souborům. Chcete-li získat úplnou cestu k textovým souborům, potřebujete příkaz Get-ChildItem.

Abych to ilustroval, vytvořil jsem dva textové soubory ve složce. Podívejte se na snímek obrazovky níže…

Jak zkombinovat PowerShell Get-ChildItem, pro každou smyčku a Get-Content

Jak jsem zmínil eelier, prvním krokem je získat cestu ke všem textovým souborům ve složce. Zde je příkaz, který tuto práci provádí…

|_+_|

Příkaz vypíše úplnou cestu k textovým souborům…

Pokud však ve složce máte další položky, například podsložky a jiné typy souborů, musíte příkaz vylepšit tak, aby vracel pouze textové soubory…

|_+_| Výsledek příkazu jsem uložil do proměnné, abych zkrátil následující příkazy.

Nyní, když máme cesty ke všem textovým souborům ve složce, je dalším krokem použití Get-Content k výpisu obsahu každého textového souboru. Protože však existuje více než jeden textový soubor, musíme použít příkaz ForEach.

|_+_|

Zde je výsledek skriptu v PowerShell ISE…

Jak zkombinovat PowerShell Get-ChildItem, pro každou smyčku a Get-Content

Jak vytvořit složky s obsahem textového souboru

V této podsekci se dozvíte, jak vytvořit složky s obsahem textového souboru.

Abych to demonstroval, mám textový soubor s názvy.

K importu obsahu textového souboru do PowerShellu použiji Get-Content; pak použijte blok příkazů ForEach k iteraci obsahu textových souborů.

Nakonec v rámci bloku příkazů ForEach použiji uznání příkaz k vytvoření složek s obsahem textového souboru.

Namísto oddělení příkazů, jako jsme to dělali doposud, však všechny příkazy zkombinuji. Zde je scénář…

|_+_|

V tomto příkazu jsem použil příkazy příkazového řádku systému Windows, CD a mkdir . Zde je verze příkazu PowerShell…

|_+_|

A zde je výsledek v PoweShell ISE:

Případně, pokud nechcete, aby se zobrazovaly informace o vytvořených složkách, použijte výstup souboru Nový předmět příkaz k Out-Null .

Skript bude nyní vypadat takto…

|_+_|

Jak rozdělit a poté spojit obsah textového souboru s příkazem Get-Content a forEach

Když jsem zkoumal tento článek, narazil jsem na toto stackoverflow.com otázka. Osoba, která položila otázku, má textový soubor s následujícími řetězci:

|_+_|

Osoba však chce upravit řetězce tak, aby vypadaly takto:

roblox nejlepší administrátorské příkazy
|_+_|

Abych tuto situaci zopakoval, vytvořil jsem textový soubor s původními řetězci. Poté jsem vytvořil krátký skript, který dosáhne požadovaného výsledku.

Zde je scénář.

|_+_|

První a druhý řádek jsou poměrně jednoduché. V řádku 1 jsem uložil cestu k textovému souboru do proměnné.

Pak jsem v řádku 2 použil Získejte obsah importovat obsah textového souboru do PowerShellu a uložit výsledek do jiné proměnné.

Nakonec jsem v řádcích 3, 4 a 5 použil výsledek Získejte obsah příkaz v příkazu PowerShell ForEach. Výsledek ForEach Statement jsem uložil do jiné proměnné.

Nejdůležitější z příkazu ForEach je to, co mám v příkazovém bloku…

|_+_|

První část příkazu používá PowerShell Split Method k přerušení obsahu textového souboru. Zde je příkaz…

|_+_|

Tento příkaz dělá přerušení řetězců v textovém souboru na | charakter. Abychom vám s tím pomohli, zde jsou původní řetězce v textovém souboru.

|_+_|

Výsledek příkazu split vytvoří následující jednotlivé řetězce:

|_+_|

Když PowerShell split vytvoří jednotlivé řetězce, jako je tento, každá položka je reprezentována číslem pozice počínaje 0 (nulou). Takže můžete přistupovat k prvnímu řetězci, 80055555 s [0], druhý s [1] a tak dále.

Než vysvětlím další část příkazu, podívejme se na výstup, kterého chceme dosáhnout. Tady to je…

|_+_|

Pokud bychom tento výstup zlomili pomocí PowerShell Split, dosáhneme toho…

|_+_|

Pokud to porovnáte s výsledkem, když jsme rozdělili původní řetězec, všimnete si, že podřetězec na pozici 4 původního textového souboru ( DCDOCS ) je nyní na pozici 2. Každý další podřetězec si zachoval svou původní pozici.

Zde je ukázána úloha druhého bitu příkazu…

|_+_|

Tento příkaz jednoduše znamená…

|_+_| Pro ilustraci jsem vložil čárky (,) k oddělení podřetězců. Příkaz neobsahuje čárky.

Zatím jsem vysvětlil tento příkaz..

|_+_|

Až do tohoto bodu…

spad 4 fov ini
|_+_|

Poslední bit používá PowerShell Join Operator k vložení původního znaku | mezi nový řetězec vytvořený tímto příkazem…

|_+_|

V několika posledních odstavcích jsem vysvětlil řádek 4 tohoto skriptu.

|_+_|

Nakonec jsem v řádku 6 převedl výstup nového řetězce uloženého v nový soubor variabilní do Set-Content . Set-Content přepíše původní soubor novým řetězcem.

Toto je skvělý příklad toho, jak můžete kombinovat Get-Content s příkazem PowerShell ForEach!

Jak používat PowerShell pro každou metodu s Get-Content

Jak používat PowerShell pro každou metodu s Get-Content

Metoda ForEach byla představena v PowerShellu verze 4. Tato metoda poskytuje vývojářům skriptů PowerShell další způsob, jak iterovat obsah textového souboru.

V této části se s několika příklady naučíte, jak používat metodu ForEach s Get-Content.

Část začíná syntaxí metody ForEach.

Syntaxe prostředí PowerShell pro každou metodu

Syntaxe PowerShell ForEach Method je…

|_+_|

Přístup k metodě ForEach objektu je podobný přístupu k jakékoli jiné metodě PowerShell. Jediný rozdíl je v tom, že metoda ForEach obsahuje blok {} v bloku ().

Jak zkombinovat PowerShell Get-ChildItem, pro každou metodu a Get-Content

V části ForEach Statement této příručky jsem sdílel níže uvedený skript…

|_+_|

Použitý skript Get-ChildItem vrátit úplnou cestu k textovým souborům v této složce…

Jak zkombinovat PowerShell Get-ChildItem, pro každou metodu a Get-Content

Zde je ekvivalentní skript ForEach Method…

|_+_|

Jak vytvořit složky s obsahem textového souboru pomocí metody ForEach

Podobně jako v příkladu v poslední podsekci jsem použil níže uvedený skript v části ForEach Statement této příručky…

|_+_|

Skript použil Get-Content a ForEach Statement k vytvoření složek pomocí obsahu textového souboru na níže uvedeném snímku obrazovky…

Na rozdíl od příkazu ForEach, který používá příkaz…

|_+_|

PowerShell ForEach Method volá metodu ForEach ve výsledku Get-Content, jako je tento…

|_+_|

Potom do bloku () vložíme blok {} a spustíme Nový předmět příkaz. Nicméně, místo použití $filename proměnnou, tentokrát používám automatickou proměnnou $_

|_+_|

Finální verze skriptu ForEach Method vypadá takto…

|_+_|

Tentokrát chci spustit příkaz v PowerShell, místo v PowerShell ISE. Takže budu mít celý skript na jednom řádku…

|_+_|

Zde je příkaz v PowerShellu a vytvořené složky. Přiložil jsem také snímek obrazovky textového souboru s názvy složek…

Jak vytvořit složky s obsahem textového souboru pomocí metody ForEach

Jak rozdělit a poté spojit obsah textového souboru pomocí metody Get-Content a ForEach

V části ForEach Statement této příručky jsem uvedl příklad s tímto stackoverflow.com otázka. Osoba, která položila otázku, chce upravit následující řetězec v textovém souboru…

|_+_|

K tomuto…

|_+_|

Abych problém vyřešil, vytvořil jsem tento skript, který používá příkaz Get-Content a PowerShell ForEach…

|_+_|

V této části průvodce diskutujeme o tom, jak používat Získejte obsah a ForEach Method, zde je ekvivalentní skript s ForEach Method…

|_+_|

Upravený je stejný až na to, že v této upravené verzi jsem nahradil příkaz ForEach metodou ForEach.

Jak používat PowerShell pro rutinu pro každý objekt s Get-Content

Jak používat PowerShell pro rutinu pro každý objekt s Get-Content

V této poslední části zopakuji některé příklady, které jsem již uvedl v prvních dvou částech.

V této části však nahradím příkaz ForEach a/nebo metodu ForEach rutinou ForEach-Object.

Sekce začíná syntaxí rutiny ForEach-Object

Syntaxe rutiny ForEach-Object

Existují dvě syntaxe ForEach-Object. Zde jsou jejich zjednodušené verze:

|_+_| |_+_|

Syntaxe ForEach-Object se může zdát složité. Jeho použití je však velmi snadné. V tomto návodu se zaměříme na VstupníObjekt parametr.

Toto je parametr, který dodává vstup do ForEach-Object. Navíc, VstupníObjekt lze poslat i potrubím...

|_+_|

Jak vytvořit složky s obsahem textového souboru pomocí rutiny ForEach-Object

V první a druhé části této příručky jsem vytvořil následující skripty.

|_+_| |_+_|

První skript používá příkaz Get-Content ForEach k vytvoření složek pomocí obsahu textového souboru na níže uvedeném snímku obrazovky…

Druhý skript navíc používá metodu Get-Content ForEach k provedení stejného úkolu.

Pokud chcete použít rutinu ForEach-Object místo příkazu ForEach nebo metody ForEach, skript bude upraven, jak je uvedeno níže…

|_+_|

Jak rozdělit a poté spojit obsah textového souboru s rutinou Get-Content a ForEach-Object

V částech ForEach Statement a ForEach Method jsem vytvořil následující skripty, abych to napravil stackoverflow.com otázka.

|_+_| |_+_|

Zde je verze rutiny ForEach-Object stejného skriptu:

|_+_|

Práce s PowerShell Get-Content and ForEach: Final Thoughts

Práce s PowerShell Get-Content and ForEach: Final Thoughts

Témata sdílená v této příručce mohou být matoucí, zejména proto, že pokrývala 3 varianty PowerShell ForEach. Aby to bylo srozumitelné, zde je tabulka shrnující pojmy sdílené v tomto článku.

OtázkaPro každý výpisPro každou metoduRutina pro každý objekt
Přijímá vstup z Get-Content
Jak přijímá vstup z Get-Content?Pipeline | nebo v bloku podmínek ForEach StatementMetoda PowerShell .()Potrubí | nebo přes VstupníObjekt parametr
Jak transformuje vstup z Get-Content?Vytvoří dočasnou proměnnou, která představuje každý objekt v kolekciPředstavuje každý objekt v kolekci s proměnnou automatického potrubí PowerShell, $_Představuje každý objekt v kolekci s proměnnou automatického potrubí PowerShell, $_
Ukázkový skript?ForEach ($filename v Get-Content D:PS-Tutoriallist.txt) Out-Null
(Get-Content D:PS-Tutoriallist.txt).ForEach(
Nová-položka -Cesta D:PS-Výukový program -Název $_ -Adresář typu položky
)
Get-Content D:PS-Tutoriallist.txt | Pro každý objekt
Nová-položka -Cesta D:PS-Výukový program -Název $_ -Adresář typu položky

To je vše – náš aktualizovaný průvodce, jak používat PowerShell Get-Content a ForEach! Doufám, že vám to pomohlo?

Pokud vám to pomohlo, hlasujte Ano na otázku Byl tento příspěvek užitečná níže.

Případně můžete položit otázku, zanechat komentář nebo poskytnout další zpětnou vazbu pomocí formuláře Zanechat odpověď, který najdete na konci této stránky.

A nakonec, pro další PowerShell tech S Zones, navštivte naši stránku průvodce Windows PowerShell How-To. Velmi užitečná vám může být také naše stránka Práce z domova.

Reference a další čtení

  1. Pro každý objekt
  2. Získejte obsah
  3. about_Foreach