Com utilitzar Powershell Get-Content i ForEach amb exemples

17 de juny de 2021 16866 Vistes PowerShell Try Catch Exemples

Aquesta Zona S us ensenya com combinar PowerShell Get-Content amb el bucle ForEach. Podeu utilitzar Get-Content per llistar el contingut d'un fitxer de text i, a continuació, utilitzar la instrucció ForEach per repetir el contingut del fitxer de text.





Hi ha 3 variants de PowerShell ForEach. Hi ha la instrucció ForEach i el mètode ForEach.
A més, hi ha el cmdlet ForEach-Object.



les extensions de contracció no funcionen

Aquesta guia comença discutint l'ordre Get-Content: la seva sintaxi, paràmetres i alguns exemples.

A continuació, a les parts restants de la guia, aprendràs a utilitzar cadascuna de les 3 variants de PowerShell ForEach i Get-Content. Per a cada variant de ForEach, parlaré de la seva sintaxi.



Finalment, mostraré diversos exemples de com utilitzar la variant PowerShell ForEach i Get-Content.



Navega per temes de publicació

Ordre Get-Content: sintaxi, paràmetres, exemples

Ordre Get-Content: sintaxi, paràmetres, exemples

Com he esmentat a la meva introducció, abans de poder utilitzar PowerShell ForEach per repetir el contingut d'un fitxer, primer heu d'importar el contingut del fitxer de text a PowerShell.



El cmdlet Get-Content s'utilitza per llistar o importar el contingut d'un fitxer de text a PowerShell.



En aquesta secció, veurem la sintaxi i els paràmetres de Get-Content. Acabaré l'apartat amb alguns exemples.

Sintaxi i paràmetres de l'ordre Get-Content

La sintaxi simplificada de l'ordre Get-Content és...

|_+_|

Get-Content té molts més paràmetres. He especificat els paràmetres d'ús habitual.

Utilitzar el - Camí paràmetre per especificar el camí complet () al fitxer de text. Heu d'incloure l'extensió del fitxer de text (.txt).

El Camí el paràmetre està a la posició 0, per tant no cal que l'especifiqueu. Només podeu introduir el valor immediatament després de Get-Content. Per obtenir més informació sobre els paràmetres de PowerShell, llegiu la nostra guia: PowerShell Param Parameter Attribute

Exemples d'ordres Get-Content

La captura de pantalla següent és una llista de servidors. Per importar el contingut del fitxer de text a PowerShell, executaré l'ordre següent...

|_+_|

L'ordre mostra la llista de servidors al fitxer de text.

Com utilitzar PowerShell ForEach Statement amb Get-Content

Com utilitzar PowerShell ForEach Loop amb Get-Content

En aquesta secció, aprendràs a canalitzar el resultat de Obtenir contingut a Per cadascú Bucle. Després, dins del Per cadascú Bloc de bucle, realitza tasques específiques.

La secció comença discutint la sintaxi de PowerShell ForEach Loop.

Sintaxi de la declaració PowerShell ForEach

Una declaració PowerShell ForEach realitza una operació contra cada element d'una col·lecció d'objectes d'entrada. Als efectes d'aquesta guia, l'operació es realitzarà amb els elements d'un fitxer de text.

La sintaxi de ForEach Statement és:

|_+_|

Com era d'esperar, la sintaxi començarà amb 'ForEach'. Després va seguit d'a entre claudàtors ‘()’; i finalment el bloc '{}'.

A la primera secció d'aquesta guia, vaig donar un exemple de com importar el contingut d'un fitxer de text amb Obtenir contingut . Aquí teniu l'ordre...

|_+_|

Si ho incloem a la sintaxi de ForEach Statement, la instrucció ForEach s'actualitzarà tal com es mostra a continuació:

|_+_|

A la sintaxi de la instrucció de ForEach actualitzada, vaig substituir el $col·lecció variable amb Get-Content D:PS-TutorialS ZonesS Zones-Servers.txt comandament.

A més, podem desar aquesta ordre al fitxer $col·lecció variable…

|_+_|

Aleshores, podem utilitzar la versió simplificada de la sintaxi de la instrucció ForEach...

|_+_|

Per obtenir més informació sobre aquesta potent declaració de PS, feu clic a PowerShell ForEach: Sintaxi, Paràmetres, Exemples .

A les subseccions restants d'aquesta secció, donaré més exemples.

Com repetir un fitxer de text amb ForEach declaració

En aquesta subsecció, afegiré algunes ordres al bloc d'ordres de la instrucció ForEach. Aquí teniu les ordres actualitzades.

|_+_|

Si executo l'script a PowerShell ISE, mostra el contingut del fitxer de text.

A la primera línia de l'script, vaig utilitzar Get-Content per importar el contingut del fitxer de text a PowerShell; després vaig utilitzar PowerShell ForEach per repetir el contingut i llistar-los amb l'ordre write-host $item.

Com combinar PowerShell Get-ChildItem, ForEach Loop i Get-Content

Si teniu diversos fitxers de text en una carpeta, primer heu d'obtenir el camí complet als fitxers de text. Per obtenir el camí complet dels fitxers de text, necessiteu l'ordre Get-ChildItem.

Per il·lustrar-ho, vaig crear dos fitxers de text en una carpeta. Vegeu la captura de pantalla a continuació...

Com combinar PowerShell Get-ChildItem, ForEach Loop i Get-Content

Com he esmentat anteriorment, el primer pas és obtenir el camí a tots els fitxers de text de la carpeta. Aquí teniu l'ordre que fa aquesta feina...

|_+_|

L'ordre enumera el camí complet als fitxers de text...

Tanmateix, si teniu altres elements a la carpeta, per exemple subcarpetes i altres tipus de fitxers, heu de millorar l'ordre per retornar només fitxers de text...

|_+_| Vaig desar el resultat de l'ordre en una variable per escurçar les ordres posteriors.

Ara que tenim els camins a tots els fitxers de text de la carpeta, el següent pas és utilitzar Get-Content per llistar el contingut de cada fitxer de text. Tanmateix, com que hi ha més d'un fitxer de text, hem d'utilitzar la instrucció ForEach.

|_+_|

Aquí teniu el resultat de l'script a PowerShell ISE...

Com combinar PowerShell Get-ChildItem, ForEach Loop i Get-Content

Com crear carpetes amb el contingut d'un fitxer de text

En aquesta subsecció, aprendràs a crear carpetes amb el contingut d'un fitxer de text.

Per demostrar-ho, tinc un fitxer de text amb noms.

Faré servir Get-Content per importar el contingut del fitxer de text a PowerShell; a continuació, utilitzeu el bloc d'instruccions ForEach per iterar el contingut dels fitxers de text.

Finalment, dins del bloc d'instruccions ForEach, faré servir apreciació comanda per crear carpetes amb el contingut del fitxer de text.

Tanmateix, en comptes de separar les ordres com hem fet fins ara, combinaré totes les ordres. Aquí teniu el guió...

|_+_|

En aquesta ordre, he utilitzat ordres del símbol del sistema de Windows, cd i mkdir . Aquí teniu la versió de PowerShell de l'ordre...

|_+_|

I aquí teniu el resultat a PoweShell ISE:

Alternativament, si no voleu que es mostri la informació sobre les carpetes creades, canalitzeu la sortida del fitxer Nou-element mana a Out-Nul .

Ara el guió tindrà aquest aspecte...

|_+_|

Com dividir i, a continuació, unir-se al contingut d'un fitxer de text amb Get-Content i ForEach

Mentre investigava aquest article, em vaig trobar amb això Stackoverflow.com pregunta. La persona que va fer la pregunta té un fitxer de text amb les cadenes següents:

|_+_|

Tanmateix, la persona vol modificar les cadenes perquè es vegin així:

|_+_|

Per replicar aquesta situació, vaig crear un fitxer de text amb les cadenes originals. Aleshores, vaig crear un script breu que aconseguirà el resultat requerit.

Aquí teniu el guió.

|_+_|

La primera i la segona línia són relativament senzilles. A la línia 1, vaig desar la ruta del fitxer de text en una variable.

Mucky duck kodi no funciona

Després, a la línia 2, vaig utilitzar Obtenir contingut per importar el contingut del fitxer de text a PowerShell i desar el resultat en una altra variable.

Finalment, a les línies 3, 4 i 5 he utilitzat el resultat de la Obtenir contingut comanda en una declaració PowerShell ForEach. Vaig desar el resultat de la declaració ForEach en una altra variable.

El més important de la declaració ForEach és el que tinc al bloc d'ordres...

|_+_|

La primera part de l'ordre utilitza PowerShell Split Method per trencar el contingut del fitxer de text. Aquí teniu l'ordre...

|_+_|

El que fa aquesta ordre és trencar les cadenes del fitxer de text al | personatge. Per ajudar-vos a relacionar-vos amb això, aquí teniu les cadenes originals del fitxer de text.

|_+_|

El resultat de l'ordre split crea les següents cadenes individuals:

|_+_|

Quan PowerShell split crea cadenes individuals com aquesta, cada element es representa amb un número de posició, començant per 0 (zero). Per tant, podeu accedir a la primera cadena, 80055555 amb [0], el segon amb [1], etc.

Abans d'explicar la següent part de l'ordre, vegem la sortida que volem aconseguir. Aquí està…

|_+_|

Si haguéssim de trencar aquesta sortida amb PowerShell Split, ho aconseguirem...

|_+_|

Si compareu això amb el resultat quan dividim la cadena original, observeu que la subcadena a la posició 4 del fitxer de text original ( DCDOCS ) es troba ara a la posició 2. Totes les altres subcadenes van conservar la seva posició original.

Aquí és on es mostra el treball del segon bit de l'ordre...

|_+_|

Aquesta ordre significa simplement...

|_+_| Vaig incloure les comes (,) per separar les subcadenes amb finalitats il·lustratives. L'ordre no inclou els comes.

Fins ara he explicat aquesta comanda..

|_+_|

Fins a aquest punt…

|_+_|

El bit final utilitza PowerShell Join Operator per inserir el caràcter original |, entre la nova cadena creada per aquesta ordre...

|_+_|

En els darrers paràgrafs he explicat la línia 4 d'aquest guió.

|_+_|

Finalment, a la línia 6, vaig canalitzar la sortida de la cadena nova desada nou fitxer variable en Contingut del conjunt . Contingut del conjunt sobreescriu el fitxer original amb la cadena nova.

Aquest és un exemple brillant de com podeu combinar Get-Content amb PowerShell ForEach declaració!

Com utilitzar el mètode PowerShell ForEach amb Get-Content

Com utilitzar el mètode PowerShell ForEach amb Get-Content

El mètode ForEach es va introduir a la versió 4 de PowerShell. Aquest mètode ofereix als desenvolupadors d'scripts de PowerShell una altra manera d'iterar el contingut d'un fitxer de text.

En aquesta secció, aprendràs a utilitzar el mètode ForEach amb Get-Content amb diversos exemples.

La secció comença amb la sintaxi del mètode ForEach.

Sintaxi del mètode PowerShell ForEach

La sintaxi del mètode PowerShell ForEach és...

|_+_|

L'accés al mètode ForEach d'un objecte és similar a l'accés a qualsevol altre mètode de PowerShell. L'única diferència és que el mètode ForEach inclou un bloc {} dins del bloc ().

Com combinar PowerShell Get-ChildItem, ForEach Method i Get-Content

A la secció ForEach Statement d'aquesta guia, vaig compartir el guió a continuació...

|_+_|

El guió utilitzat Get-ChildItem per tornar el camí complet als fitxers de text d'aquesta carpeta...

Com combinar PowerShell Get-ChildItem, ForEach Method i Get-Content

Aquí teniu l'script equivalent del mètode ForEach...

|_+_|

Com crear carpetes amb el contingut d'un fitxer de text amb el mètode ForEach

De manera semblant a l'exemple de l'última subsecció, vaig utilitzar el guió següent a la secció ForEach Statement d'aquesta guia...

|_+_|

L'script va utilitzar Get-Content i ForEach Statement per crear carpetes utilitzant el contingut del fitxer de text de la captura de pantalla següent...

A diferència de la declaració ForEach que utilitza l'ordre...

vlc necessita una biblioteca per a la descodificació d'AACs
|_+_|

PowerShell ForEach Method crida al mètode ForEach en el resultat de Get-Content com aquest...

|_+_|

Aleshores, dins del bloc (), inserim el bloc {} i executem el Nou-element comandament. Tanmateix, en comptes d'utilitzar $nom de fitxer variable, aquesta vegada, faig servir la variable automàtica $_

|_+_|

La versió final del mètode ForEach del script té aquest aspecte...

|_+_|

Aquesta vegada, vull executar l'ordre a PowerShell, en lloc de PowerShell ISE. Per tant, tindré tot el guió en una sola línia...

|_+_|

Aquí teniu l'ordre a PowerShell i les carpetes creades. També he inclòs la captura de pantalla del fitxer de text amb els noms de les carpetes...

Com crear carpetes amb el contingut d'un fitxer de text amb el mètode ForEach

Com dividir i, a continuació, unir-se al contingut d'un fitxer de text amb el mètode Get-Content i ForEach

A la secció ForEach Statement d'aquesta guia, vaig donar un exemple amb això Stackoverflow.com pregunta. La persona que va fer la pregunta vol modificar la cadena següent en un fitxer de text...

|_+_|

A això…

|_+_|

Per solucionar el problema, vaig crear aquest script que utilitza la declaració Get-Content i PowerShell ForEach...

|_+_|

En aquesta secció de la guia estem discutint com utilitzar-lo Obtenir contingut i el mètode ForEach, aquí teniu l'script equivalent amb el mètode ForEach...

|_+_|

El modificat és el mateix, excepte que, en aquesta versió modificada, vaig substituir la instrucció ForEach amb el mètode ForEach.

Com utilitzar PowerShell ForEach-Object Cmdlet amb Get-Content

Com utilitzar PowerShell ForEach-Object Cmdlet amb Get-Content

En aquest darrer apartat, repetiré alguns dels exemples que ja he posat en els dos primers apartats.

Tanmateix, en aquesta secció, substituiré la instrucció ForEach i/o el mètode ForEach amb el cmdlet ForEach-Object.

La secció comença amb la sintaxi del cmdlet ForEach-Object

Sintaxi del cmdlet ForEach-Object

Hi ha dues sintaxis de ForEach-Object. Aquestes són les seves versions simplificades:

|_+_| |_+_|

Les sintaxis de ForEach-Object poden semblar complexes. No obstant això, és molt fàcil d'utilitzar. Per a aquesta guia, ens centrarem en el InputObject paràmetre.

Aquest és el paràmetre que alimenta l'entrada a ForEach-Object. A més, InputObject també es pot enviar mitjançant un pipeline...

|_+_|

Com crear carpetes amb el contingut d'un fitxer de text amb el cmdlet ForEach-Object

A la primera i a la segona seccions d'aquesta guia, vaig crear els scripts següents.

|_+_| |_+_|

El primer script utilitza la declaració Get-Content ForEach per crear carpetes utilitzant el contingut del fitxer de text de la captura de pantalla següent...

A més, el segon script utilitza el mètode Get-Content ForEach per realitzar la mateixa tasca.

Si voleu utilitzar ForEach-Object Cmdlet en lloc de ForEach Statement o ForEach Method, l'script es modificarà tal com es mostra a continuació...

can you block a subreddit
|_+_|

Com dividir i unir el contingut d'un fitxer de text amb el cmdlet Get-Content i ForEach-Object

A les seccions ForEach Statement i ForEach Method, vaig crear els scripts següents per solucionar-ho Stackoverflow.com pregunta.

|_+_| |_+_|

Aquí teniu la versió del cmdlet ForEach-Object del mateix script:

|_+_|

Treballant amb PowerShell Get-Content i ForEach: reflexions finals

Treballant amb PowerShell Get-Content i ForEach: reflexions finals

Els temes compartits en aquesta guia poden ser confusos, sobretot perquè cobria 3 variants de PowerShell ForEach. Per facilitar-ne la comprensió, aquí teniu una taula que resumeix els conceptes compartits en aquest article.

PreguntaPer a cada declaracióPer a cada mètodeCmdlet per a cada objecte
Accepta l'entrada de Get-Content
Com accepta aportacions de Get-Content?Pipeline |, o dins del bloc de condicions ForEach StatementMètode PowerShell .()Gasoducte | o mitjançant el InputObject paràmetre
Com transforma l'entrada de Get-Content?Crea una variable temporal que representa cada objecte de la col·leccióRepresenta cada objecte de la col·lecció amb la variable de canalització automàtica de PowerShell, $_Representa cada objecte de la col·lecció amb la variable de canalització automàtica de PowerShell, $_
Script de mostra?ForEach ($filename a Get-Content D:PS-Tutoriallist.txt) Out-Null
(Obtenir contingut D:PS-Tutoriallist.txt).ForEach(
New-Item -Path D:PS-Tutorial -Name $_ -ItemType Directory
)
Get-Content D:PS-Tutoriallist.txt | Per a cada objecte
New-Item -Path D:PS-Tutorial -Name $_ -ItemType Directory

Això és tot: la nostra guia actualitzada sobre com utilitzar PowerShell Get-Content i ForEach! Espero que us hagi estat útil?

Si us ha semblat útil, si us plau voteu a la pregunta Va ser útil aquesta publicació a continuació.

Alternativament, podeu fer una pregunta, deixar un comentari o proporcionar més comentaris amb el formulari Deixa una resposta que es troba al final d'aquesta pàgina.

Finalment, per obtenir més zones S de tecnologia de PowerShell, visiteu la nostra pàgina de guia de instruccions de Windows PowerShell. També pot ser que la nostra pàgina de treball des d'inici sigui molt útil.

Referències i lectura addicional

  1. Per a cada objecte
  2. Obtenir contingut
  3. sobre_Foreach