Hur man använder Powershell Get-Content And ForEach med exempel
Denna S Zone lär dig hur du kombinerar PowerShell Get-Content med ForEach-slingan. Du kan använda Get-Content för att lista innehållet i en textfil och sedan använda ForEach-satsen för att upprepa innehållet i textfilen.
Det finns 3 varianter av PowerShell ForEach. Det finns ForEach-satsen och ForEach-metoden.
Dessutom finns det ForEach-Object Cmdlet.
Den här guiden börjar med att diskutera kommandot Get-Content – dess syntax, parametrar och några exempel.
aktivera starz xbox one
Sedan, i de återstående delarna av guiden, kommer du att lära dig hur du använder var och en av de tre varianterna av PowerShell ForEach och Get-Content. För varje variant av ForEach kommer jag att diskutera dess syntax.
Slutligen kommer jag att visa flera exempel på hur man använder PowerShell ForEach-varianten och Get-Content.
Bläddra bland inläggsämnen
- Get-Content Kommando: Syntax, Parametrar, Exempel
- Hur man använder PowerShell för varje uttalande med Get-Content
- Syntax för PowerShell för varje uttalande
- Hur man itererar en textfil med för varje uttalande
- Hur man kombinerar PowerShell Get-ChildItem, For varje loop och Get-Content
- Hur man skapar mappar med innehållet i en textfil
- Hur man delar upp och ansluter sedan innehållet i en textfil med Get-Content och för varje uttalande
- Hur man använder PowerShell för varje metod med Get-Content
- Hur man använder PowerShell ForEach-Object Cmdlet med Get-Content
- Arbeta med PowerShell Get-Content And ForEach: Final Thoughts
- Referenser och vidare läsning
Get-Content Kommando: Syntax, Parametrar, Exempel
Som jag nämnde i min introduktion, innan du kan använda PowerShell ForEach för att iterera innehållet i en fil, måste du först importera innehållet i textfilen till PowerShell.
Get-Content Cmdlet används för att lista eller importera innehållet i en textfil till PowerShell.
I det här avsnittet kommer vi att titta på syntaxen och parametrarna för Get-Content. Jag avslutar avsnittet med några exempel.
Syntax och parametrar för kommandot Get-Content
Den förenklade syntaxen för kommandot Get-Content är...
|_+_|Get-Content har mycket fler parametrar. Jag angav de vanligaste parametrarna.
Använd - Väg parameter för att ange den fullständiga sökvägen () till textfilen. Du måste inkludera förlängningen av textfilen (.txt).
De Väg parametern är i position 0, därför behöver du inte specificera den. Du kan bara ange värdet direkt efter Get-Content. För att läsa mer om PowerShell-parametrar, läs vår guide – PowerShell Param Parameter AttributeExempel på kommandon Get-Content
Skärmdumpen nedan är en lista över servrar. För att importera innehållet i textfilen till PowerShell kör jag kommandot nedan...
|_+_|Kommandot visar listan över servrar i textfilen.
Hur man använder PowerShell för varje uttalande med Get-Content
I det här avsnittet kommer du att lära dig hur du piper resultatet av Get-Content in i För varje Slinga. Sedan, inom För varje Slingblock, utför specifika uppgifter.
Avsnittet börjar med att diskutera syntaxen för PowerShell ForEach Loop.
Syntax för PowerShell för varje uttalande
En PowerShell ForEach Statement utför en operation mot varje objekt i en samling indataobjekt. För syftet med denna guide kommer operationen att utföras mot objekten i en textfil.
Syntaxen för ForEach Statement är:
|_+_|Som förväntat börjar syntaxen med 'ForEach'. Den följs sedan av a av parentes '()'; och slutligen '{}' block.
I det första avsnittet av den här guiden gav jag ett exempel på hur man importerar innehållet i en textfil med Get-Content . Här är kommandot...
|_+_|Om vi inkluderar detta i ForEach Statement-syntaxen kommer ForEach-satsen att uppdateras enligt nedan:
|_+_|I den uppdaterade ForEach-satssyntaxen ersatte jag $samling variabel med Get-Content D:PS-TutorialS ZonesS Zones-Servers.txt kommando.
Dessutom kan vi spara detta kommando i $samling variabel…
|_+_|Sedan kan vi använda den förenklade versionen av ForEach-satssyntaxen...
|_+_|För att lära dig mer om denna kraftfulla PS-sats, klicka på PowerShell ForEach: Syntax, Parametrar, Exempel .
I de återstående underavsnitten av detta avsnitt kommer jag att ge fler exempel.
Hur man itererar en textfil med för varje uttalande
I det här underavsnittet kommer jag att lägga till några kommandon till kommandoblocket i ForEach-satsen. Här är de uppdaterade kommandona.
|_+_|Om jag kör skriptet i PowerShell ISE , visar det innehållet i textfilen.
På den första raden i skriptet använde jag Get-Content för att importera innehållet i textfilen till PowerShell; sedan använde jag PowerShell ForEach-satsen för att iterera innehållet och lista dem med kommandot write-host $item.Hur man kombinerar PowerShell Get-ChildItem, For varje loop och Get-Content
Om du har flera textfiler i en mapp måste du först få den fullständiga sökvägen till textfilerna. För att få den fullständiga sökvägen till textfilerna behöver du kommandot Get-ChildItem.
För att illustrera detta skapade jag två textfiler i en mapp. Se skärmdumpen nedan...
Som jag nämnde eelier är det första steget att få sökvägen till alla textfiler i mappen. Här är kommandot som gör det här jobbet...
|_+_|Kommandot listar hela sökvägen till textfilerna...
Men om du har andra objekt i mappen, till exempel undermappar och andra typer av filer, måste du förbättra kommandot för att bara returnera textfiler...
|_+_| Jag sparade resultatet av kommandot i en variabel för att förkorta de efterföljande kommandona.Nu när vi har sökvägarna till alla textfiler i mappen är nästa steg att använda Get-Content för att lista innehållet i varje textfil. Men eftersom det finns mer än en textfil måste vi använda ForEach-satsen.
|_+_|Här är resultatet av skriptet i PowerShell ISE...
Hur man skapar mappar med innehållet i en textfil
I det här underavsnittet kommer du att lära dig hur du skapar mappar med innehållet i en textfil.
För att demonstrera detta har jag en textfil med namn.
Jag kommer att använda Get-Content för att importera innehållet i textfilen till PowerShell; använd sedan ForEach-satsblocket för att iterera innehållet i textfilerna.
Slutligen, inom ForEach-satsblocket kommer jag att använda uppskattning kommando för att skapa mappar med innehållet i textfilen.
Men istället för att separera kommandona som vi har gjort hittills kommer jag att kombinera alla kommandon. Här är manuset...
|_+_|I det här kommandot använde jag Windows Command Prompt-kommandon, CD och mkdir . Här är PowerShell-versionen av kommandot ...
|_+_|Och här är resultatet i PoweShell ISE:
Alternativt, om du inte vill att informationen om de skapade mapparna ska visas, rör utdata från Nytt föremål kommando till Out-Null .
Manuset kommer nu att se ut så här...
|_+_|Hur man delar upp och ansluter sedan innehållet i en textfil med Get-Content och för varje uttalande
Medan jag undersökte den här artikeln kom jag över detta stackoverflow.com fråga. Personen som ställde frågan har en textfil med följande strängar:
|_+_|Personen vill dock modifiera strängarna så att de ser ut så här:
|_+_|För att replikera denna situation skapade jag en textfil med de ursprungliga strängarna. Sedan skapade jag ett kort skript som kommer att uppnå det önskade resultatet.
Här är manuset.
|_+_|Den första och andra raden är relativt enkla. På rad 1 sparade jag textfilens sökväg till en variabel.
Sedan, i rad 2, använde jag Get-Content för att importera innehållet i textfilen till PowerShell och spara resultatet i en annan variabel.
Slutligen, i raderna 3, 4 och 5 använde jag resultatet av Get-Content kommandot i ett PowerShell ForEach-uttalande. Jag sparade resultatet av ForEach Statement i en annan variabel.
Det viktigaste av ForEach Statement är vad jag har i kommandoblocket...
|_+_|Den första delen av kommandot använder PowerShell Split Method för att bryta innehållet i textfilen. Här är kommandot...
|_+_|Vad detta kommando gör är att bryta strängarna i textfilen vid | karaktär. För att hjälpa dig relatera till detta, här är de ursprungliga strängarna i textfilen.
|_+_|Resultatet av split-kommandot skapar följande individuella strängar:
|_+_|När PowerShell split skapar individuella strängar så här, representeras varje objekt av ett positionsnummer, med start från 0 (noll). Så du kan komma åt den första strängen, 80055555 med [0], den andra med [1] och så vidare.
Innan jag förklarar nästa del av kommandot, låt oss se resultatet vi vill uppnå. Här är det…
|_+_|Om vi skulle bryta denna utgång med PowerShell Split, kommer vi att uppnå detta...
|_+_|Om du jämför detta med resultatet när vi delade den ursprungliga strängen, märker du att understrängen i position 4 i den ursprungliga textfilen ( DCDOCS ) är nu i position 2. Varannan delsträng behöll sin ursprungliga position.
Det är här jobbet för den andra biten av kommandot visas...
|_+_|Detta kommando betyder helt enkelt...
|_+_| Jag inkluderade comas (,) för att separera delsträngarna i illustrationssyfte. Kommandot inkluderar inte koma.Hittills har jag förklarat detta kommando..
|_+_|Fram till denna punkt...
|_+_|Den sista biten använder PowerShell Join Operator för att infoga det ursprungliga tecknet |, mellan den nya strängen som skapas av detta kommando...
|_+_|I de sista styckena har jag förklarat rad 4 i detta manus.
|_+_|Slutligen, på rad 6, skickade jag utgången från den nya strängen som sparats i ny fil variabel in i Set-Content . Set-Content skriver över den ursprungliga filen med den nya strängen.
Det här är ett lysande exempel på hur du kan kombinera Get-Content med PowerShell ForEach-uttalande!
Hur man använder PowerShell för varje metod med Get-Content
ForEach-metoden introducerades i PowerShell version 4. Denna metod ger PowerShell-skriptutvecklare ett annat sätt att iterera innehållet i en textfil.
I det här avsnittet kommer du att lära dig hur du använder ForEach-metoden med Get-Content med flera exempel.
Avsnittet börjar med syntaxen för ForEach-metoden.
Syntax för PowerShell för varje metod
Syntaxen för PowerShell ForEach-metoden är...
|_+_|Att komma åt ForEach-metoden för ett objekt liknar att komma åt vilken annan PowerShell-metod som helst. Den enda skillnaden är att ForEach-metoden inkluderar ett {}-block i ()-blocket.
Hur man kombinerar PowerShell Get-ChildItem, för varje metod och Get-Content
I avsnittet ForEach Statement i den här guiden delade jag skriptet nedan...
|_+_|Manuset som används Get-ChildItem för att returnera den fullständiga sökvägen till textfilerna i den här mappen...
Här är skriptet motsvarande ForEach Method...
|_+_|Hur man skapar mappar med innehållet i en textfil med för varje metod
I likhet med exemplet i det sista underavsnittet använde jag skriptet nedan i avsnittet ForEach Statement i den här guiden...
|_+_|Skriptet använde Get-Content och ForEach Statement för att skapa mappar med innehållet i textfilen i skärmdumpen nedan...
Till skillnad från ForEach Statement som använder kommandot...
|_+_|PowerShell ForEach Method anropar ForEach Method i resultatet av Get-Content så här...
|_+_|Sedan, inom ()-blocket, infogar vi {}-blocket och kör Nytt föremål kommando. Men istället för att använda $filnamn variabel, den här gången använder jag den automatiska variabeln $_
|_+_|Den slutliga ForEach Method-versionen av skriptet ser ut så här...
|_+_|Den här gången vill jag köra kommandot i PowerShell istället för PowerShell ISE. Så jag kommer att ha hela manuset på en enda rad...
|_+_|Här är kommandot i PowerShell och mapparna som skapats. Jag har också inkluderat skärmdumpen av textfilen med mappnamnen ...
Hur man delar upp och ansluter sedan innehållet i en textfil med Get-Content och för varje metod
I avsnittet ForEach Statement i den här guiden gav jag ett exempel med detta stackoverflow.com fråga. Personen som ställde frågan vill ändra följande sträng i en textfil...
|_+_|Till detta…
|_+_|För att åtgärda problemet skapade jag det här skriptet som använder Get-Content och PowerShell ForEach-satsen...
|_+_|I det här avsnittet av guiden diskuterar vi hur man använder Get-Content och ForEach Method, här är motsvarande skript med ForEach Method...
|_+_|Den modifierade är densamma förutom att jag i den här modifierade versionen ersatte ForEach-satsen med ForEach Method.
Hur man använder PowerShell ForEach-Object Cmdlet med Get-Content
I det här sista avsnittet kommer jag att upprepa några av de exempel jag redan har gett i de två första avsnitten.
Men i det här avsnittet kommer jag att ersätta ForEach-satsen och/eller ForEach-metoden med ForEach-Object Cmdlet.
Avsnittet börjar med syntaxen för ForEach-Object Cmdlet
Syntax för ForEach-Object Cmdlet
Det finns två syntaxer för ForEach-Object. Här är deras förenklade versioner:
|_+_| |_+_|Syntaxerna för ForEach-Object kan verka komplexa. Det är dock väldigt lätt att använda. För den här guiden kommer vi att fokusera på InputObject parameter.
Detta är parametern som matar in input till ForEach-Object. Dessutom, InputObject kan också skickas via en pipeline...
|_+_|Hur man skapar mappar med innehållet i en textfil med ForEach-Object Cmdlet
I de första och andra avsnitten av den här guiden skapade jag följande skript.
|_+_| |_+_|Det första skriptet använder Get-Content ForEach Statement för att skapa mappar med innehållet i textfilen i skärmdumpen nedan...
Windows Defender din IT-administratör har begränsat
Dessutom använder det andra skriptet Get-Content ForEach Method för att utföra samma uppgift.
Om du vill använda ForEach-Object Cmdlet istället för ForEach Statement eller ForEach Method, kommer skriptet att ändras enligt nedan...
|_+_|Hur man delar upp och ansluter sedan innehållet i en textfil med Get-Content och ForEach-Object Cmdlet
I avsnitten ForEach Statement och ForEach Method skapade jag följande skript för att fixa detta stackoverflow.com fråga.
|_+_| |_+_|Här är ForEach-Object Cmdlet-versionen av samma skript:
|_+_|Arbeta med PowerShell Get-Content And ForEach: Final Thoughts
Ämnena som delas i den här guiden kan vara förvirrande, särskilt eftersom den täckte 3 varianter av PowerShell ForEach. För att göra det lätt att förstå, här är en tabell som sammanfattar begreppen som delas i den här artikeln.
| Fråga | För varje uttalande | För varje metod | ForEach-Object Cmdlet |
|---|---|---|---|
| Accepterar input från Get-Content | ✓ | ✓ | ✓ |
| Hur accepterar den input från Get-Content? | Pipeline |, eller inom villkorsblocket ForEach Statement | PowerShell-metod .() | Rörledning | eller via InputObject parameter |
| Hur förvandlar det input från Get-Content? | Skapar en tidsvariabel som representerar varje objekt i samlingen | Representerar varje objekt i samlingen med PowerShell automatisk pipeline-variabel, $_ | Representerar varje objekt i samlingen med PowerShell automatisk pipeline-variabel, $_ |
| Exempelskript? | ForEach ($filnamn i Get-Content D:PS-Tutoriallist.txt) Out-Null | (Get-Content D:PS-Tutoriallist.txt).ForEach( New-Item -Path D:PS-Tutorial -Name $_ -ItemType Directory ) | Get-Content D:PS-Tutoriallist.txt | För varje objekt New-Item -Path D:PS-Tutorial -Name $_ -ItemType Directory |
Det är det – vår uppdaterade guide om hur du använder PowerShell Get-Content och ForEach! Jag hoppas att du tyckte det var till hjälp?
Om du tyckte att det var användbart, vänligen rösta Ja till frågan Var detta inlägg användbar nedan.
Alternativt kan du ställa en fråga, lämna en kommentar eller ge mer feedback med formuläret Lämna ett svar som finns i slutet av denna sida.
Slutligen, för fler PowerShell tech S Zones, besök vår Windows PowerShell How-To guide-sida. Du kan också hitta vår Work from Home-sida till stor hjälp.


