Como usar o Powershell Get-Content e ForEach com exemplos

17 de junho de 2021 16866 Visualizações Exemplos de tentativa de captura do PowerShell

Esta Zona S ensina como combinar o PowerShell Get-Content com o loop ForEach. Você pode usar Get-Content para listar o conteúdo de um arquivo de texto e, em seguida, usar a instrução ForEach para iterar o conteúdo do arquivo de texto.





Existem 3 variantes do PowerShell ForEach. Existe a instrução ForEach e o método ForEach.
Além disso, há o cmdlet ForEach-Object.



Este guia começa discutindo o comando Get-Content – ​​sua sintaxe, parâmetros e alguns exemplos.

Em seguida, nas partes restantes do guia, você aprenderá a usar cada uma das 3 variantes do PowerShell ForEach e Get-Content. Para cada variante do ForEach, discutirei sua sintaxe.



Por fim, mostrarei vários exemplos de como usar a variante PowerShell ForEach e Get-Content.



Procurar tópicos de postagem

Comando Get-Content: Sintaxe, Parâmetros, Exemplos

Comando Get-Content: Sintaxe, Parâmetros, Exemplos

Como mencionei na minha introdução, antes de usar o PowerShell ForEach para iterar o conteúdo de um arquivo, você precisa primeiro importar o conteúdo do arquivo de texto para o PowerShell.



O cmdlet Get-Content é usado para listar ou importar o conteúdo de um arquivo de texto para o PowerShell.



Nesta seção, veremos a sintaxe e os parâmetros de Get-Content. Terminarei a seção com alguns exemplos.

Sintaxe e parâmetros do comando Get-Content

A sintaxe simplificada do comando Get-Content é…

|_+_|

Get-Content tem muito mais parâmetros. Eu especifiquei os parâmetros comumente usados.

Use o - Caminho parâmetro para especificar o caminho completo () para o arquivo de texto. Você deve incluir a extensão do arquivo de texto (.txt).

O Caminho parâmetro está na posição 0, portanto, você não precisa especificá-lo. Você pode simplesmente inserir o valor imediatamente após Get-Content. Para ler mais sobre os parâmetros do PowerShell, leia nosso guia – PowerShell Param Parameter Attribute

Exemplos de comando Get-Content

A captura de tela abaixo é uma lista de servidores. Para importar o conteúdo do arquivo de texto para o PowerShell, executarei o comando abaixo…

|_+_|

O comando exibe a lista de servidores no arquivo de texto.

Como usar a instrução ForEach do PowerShell com Get-Content

Como usar o loop ForEach do PowerShell com Get-Content

Nesta seção, você aprenderá como canalizar o resultado de Obter conteudo em Para cada Laço. Então, dentro do Para cada Bloco de loop, execute tarefas específicas.

A seção começa discutindo a sintaxe do PowerShell ForEach Loop.

Sintaxe da instrução ForEach do PowerShell

Uma Instrução ForEach do PowerShell executa uma operação em cada item em uma coleção de objetos de entrada. Para os propósitos deste guia, a operação será executada nos itens em um arquivo de texto.

A sintaxe da instrução ForEach é:

|_+_|

Como esperado, a sintaxe começará com 'ForEach'. Em seguida, é seguido por um entre colchetes '()'; e finalmente o bloco '{}'.

Na primeira seção deste guia, dei um exemplo de como importar o conteúdo de um arquivo de texto com Obter conteudo . Aqui está o comando…

|_+_|

Se incluirmos isso na sintaxe da instrução ForEach, a instrução ForEach será atualizada conforme mostrado abaixo:

|_+_|

Na sintaxe atualizada da instrução ForEach, substituí o $ coleção variável com Get-Content D:PS-TutorialS ZonesS Zones-Servers.txt comando.

Além disso, podemos salvar este comando no $ coleção variável…

legendas vlc não funcionam
|_+_|

Então, podemos usar a versão simplificada da sintaxe da instrução ForEach…

|_+_|

Para saber mais sobre essa poderosa instrução PS, clique em PowerShell ForEach: Syntax, Parameters, Examples .

Nas demais subseções desta seção, darei mais exemplos.

Como iterar um arquivo de texto com a instrução ForEach

Nesta subseção, adicionarei alguns comandos ao bloco de comandos da instrução ForEach. Aqui estão os comandos atualizados.

|_+_|

Se eu executar o script no PowerShell ISE, ele exibirá o conteúdo do arquivo de texto.

Na primeira linha do script, usei Get-Content para importar o conteúdo do arquivo de texto para o PowerShell; em seguida, usei a instrução PowerShell ForEach para iterar o conteúdo e listá-los com o comando write-host $item.

Como combinar PowerShell Get-ChildItem, ForEach Loop e Get-Content

Se você tiver vários arquivos de texto em uma pasta, primeiro você precisa obter o caminho completo para os arquivos de texto. Para obter o caminho completo dos arquivos de texto, você precisa do comando Get-ChildItem.

Para ilustrar isso, criei dois arquivos de texto em uma pasta. Veja a imagem abaixo…

Como combinar PowerShell Get-ChildItem, ForEach Loop e Get-Content

Como mencionei eelier, o primeiro passo é obter o caminho para todos os arquivos de texto na pasta. Aqui está o comando que faz esse trabalho…

|_+_|

O comando lista o caminho completo para os arquivos de texto…

No entanto, se você tiver outros itens na pasta, por exemplo, subpastas e outros tipos de arquivos, você precisa melhorar o comando para retornar apenas arquivos de texto…

|_+_| Salvei o resultado do comando em uma variável para encurtar os comandos subsequentes.

Agora que temos os caminhos para todos os arquivos de texto na pasta, a próxima etapa é usar Get-Content para listar o conteúdo de cada arquivo de texto. No entanto, como há mais de um arquivo de texto, precisamos usar a instrução ForEach.

|_+_|

Aqui está o resultado do script no PowerShell ISE…

Como combinar PowerShell Get-ChildItem, ForEach Loop e Get-Content

Como criar pastas com o conteúdo de um arquivo de texto

Nesta subseção, você aprenderá como criar pastas com o conteúdo de um arquivo de texto.

Para demonstrar isso, tenho um arquivo de texto com nomes.

Usarei Get-Content para importar o conteúdo do arquivo de texto para o PowerShell; em seguida, use o bloco de instrução ForEach para iterar o conteúdo dos arquivos de texto.

Por fim, dentro do bloco de instruções ForEach, usarei apreciação comando para criar pastas com o conteúdo do arquivo de texto.

câmera do google oneplus 6

No entanto, em vez de separar os comandos como fizemos até agora, vou combinar todos os comandos. Aqui está o roteiro…

|_+_|

Neste comando, usei comandos do prompt de comando do Windows, CD e mkdir . Aqui está a versão do PowerShell do comando…

|_+_|

E aqui está o resultado no PoweShell ISE:

Alternativamente, se você não quiser que as informações sobre as pastas criadas sejam exibidas, canalize a saída do Novo item comando para Out-Null .

O script agora ficará assim…

|_+_|

Como dividir e depois juntar o conteúdo de um arquivo de texto com a instrução Get-Content e ForEach

Enquanto estava pesquisando este artigo, me deparei com este stackoverflow.com pergunta. A pessoa que fez a pergunta tem um arquivo de texto com as seguintes strings:

|_+_|

No entanto, a pessoa deseja modificar as strings para ficar assim:

|_+_|

Para replicar essa situação, criei um arquivo de texto com as strings originais. Em seguida, criei um pequeno script que alcançará o resultado desejado.

Aqui está o roteiro.

|_+_|

A primeira e a segunda linha são relativamente simples. Na linha 1, salvei o caminho do arquivo de texto em uma variável.

Então, na linha 2, usei Obter conteudo para importar o conteúdo do arquivo de texto para o PowerShell e salvar o resultado em outra variável.

Por fim, nas linhas 3, 4 e 5 utilizei o resultado da Obter conteudo comando em uma instrução PowerShell ForEach. Salvei o resultado da instrução ForEach em outra variável.

O mais importante da declaração ForEach é o que tenho no bloco de comando…

|_+_|

A primeira parte do comando usa o método de divisão do PowerShell para quebrar o conteúdo do arquivo de texto. Aqui está o comando…

|_+_|

O que esse comando faz é quebrar as strings no arquivo de texto no | personagem. Para ajudá-lo a se relacionar com isso, aqui estão as strings originais no arquivo de texto.

|_+_|

O resultado do comando split cria as seguintes strings individuais:

|_+_|

Quando a divisão do PowerShell cria strings individuais como esta, cada item é representado por um número de posição, começando em 0 (zero). Então, você pode acessar a primeira string, 80055555 com [0], o segundo com [1], e assim por diante.

Antes de explicar a próxima parte do comando, vamos ver a saída que queremos alcançar. Aqui está…

|_+_|

Se quebrarmos essa saída com o PowerShell Split, conseguiremos isso…

|_+_|

Se você comparar isso com o resultado quando dividimos a string original, você notará que a substring na posição 4 do arquivo de texto original ( DCDOCS ) está agora na posição 2. Todas as outras substrings mantiveram sua posição original.

É aqui que o trabalho do segundo bit do comando mostrado…

|_+_|

Este comando significa simplesmente…

|_+_| Incluí as vírgulas (,) para separar as substrings para fins de ilustração. O comando não inclui as vírgulas.

Até agora eu expliquei este comando ..

|_+_|

Até este ponto…

|_+_|

O bit final usa o PowerShell Join Operator para inserir o caractere original |, entre a nova string criada por este comando…

|_+_|

Nos últimos parágrafos, expliquei a linha 4 deste script.

|_+_|

Finalmente, na linha 6, canalizei a saída da nova string salva em novo arquivo variável em Conteúdo definido . Conteúdo definido substitui o arquivo original pela nova string.

Este é um exemplo brilhante de como você pode combinar Get-Content com a instrução PowerShell ForEach!

Como usar o método PowerShell ForEach com Get-Content

Como usar o método PowerShell ForEach com Get-Content

O método ForEach foi introduzido no PowerShell versão 4. Esse método oferece aos desenvolvedores de script do PowerShell outra maneira de iterar o conteúdo de um arquivo de texto.

Nesta seção, você aprenderá a usar o método ForEach com Get-Content com vários exemplos.

A seção começa com a sintaxe do Método ForEach.

Sintaxe do método PowerShell ForEach

A sintaxe do método PowerShell ForEach é…

|_+_|

Acessar o método ForEach de um objeto é semelhante a acessar qualquer outro método do PowerShell. A única diferença é que o método ForEach inclui um bloco {} dentro do bloco ().

Como combinar o Get-ChildItem do PowerShell, o método ForEach e o Get-Content

Na seção ForEach Statement deste guia, compartilhei o script abaixo…

|_+_|

O roteiro utilizado Get-ChildItem para retornar o caminho completo para os arquivos de texto nesta pasta…

Como combinar o Get-ChildItem do PowerShell, o método ForEach e o Get-Content

Aqui está o script equivalente do Método ForEach…

|_+_|

Como criar pastas com o conteúdo de um arquivo de texto com o método ForEach

Semelhante ao exemplo na última subseção, usei o script abaixo na seção ForEach Statement deste guia…

|_+_|

O script usou Get-Content e ForEach Statement para criar pastas usando o conteúdo do arquivo de texto na captura de tela abaixo…

Ao contrário da instrução ForEach que usa o comando…

|_+_|

O método ForEach do PowerShell chama o método ForEach no resultado de Get-Content assim…

|_+_|

Em seguida, dentro do bloco (), inserimos o bloco {} e executamos o Novo item comando. No entanto, em vez de usar o $filename variável, desta vez, eu uso a variável automática $_

|_+_|

A versão final do método ForEach do script se parece com isso…

|_+_|

Desta vez, quero executar o comando no PowerShell, em vez do PowerShell ISE. Então, terei todo o roteiro em uma única linha…

|_+_|

Aqui está o comando no PowerShell e as pastas criadas. Também incluí a captura de tela do arquivo de texto com os nomes das pastas…

Como criar pastas com o conteúdo de um arquivo de texto com o método ForEach

Como dividir e juntar o conteúdo de um arquivo de texto com o método Get-Content e ForEach

Na seção ForEach Statement deste guia, dei um exemplo com este stackoverflow.com pergunta. A pessoa que fez a pergunta deseja modificar a seguinte string em um arquivo de texto…

|_+_|

Para isso…

|_+_|

Para corrigir o problema, criei este script que usa a instrução Get-Content e PowerShell ForEach…

|_+_|

Nesta seção do guia, estamos discutindo como usar Obter conteudo e ForEach Method, aqui está o script equivalente com ForEach Method…

|_+_|

O modificado é o mesmo, exceto que, nesta versão modificada, substituí a instrução ForEach pelo método ForEach.

Como usar o cmdlet ForEach-Object do PowerShell com Get-Content

Como usar o cmdlet ForEach-Object do PowerShell com Get-Content

Nesta última seção, vou repetir alguns dos exemplos que já dei nas duas primeiras seções.

No entanto, nesta seção, substituirei a instrução ForEach e/ou o método ForEach pelo cmdlet ForEach-Object.

A seção começa com a sintaxe do cmdlet ForEach-Object

Sintaxe do cmdlet ForEach-Object

Existem duas sintaxes de ForEach-Object. Aqui estão suas versões simplificadas:

como configurar macros de teclado
|_+_| |_+_|

As sintaxes de ForEach-Object podem parecer complexas. No entanto, é muito fácil de usar. Para este guia, vamos nos concentrar no Objeto de entrada parâmetro.

Este é o parâmetro que alimenta a entrada em ForEach-Object. Além disso, Objeto de entrada também pode ser enviado através de um pipeline…

|_+_|

Como criar pastas com o conteúdo de um arquivo de texto com o cmdlet ForEach-Object

Na primeira e na segunda seções deste guia, criei os seguintes scripts.

|_+_| |_+_|

O primeiro script usa a instrução Get-Content ForEach para criar pastas usando o conteúdo do arquivo de texto na captura de tela abaixo…

Além disso, o segundo script usa o método Get-Content ForEach para executar a mesma tarefa.

Se você quiser usar o cmdlet ForEach-Object em vez da instrução ForEach ou do método ForEach, o script será modificado conforme mostrado abaixo…

|_+_|

Como dividir e juntar o conteúdo de um arquivo de texto com o cmdlet Get-Content e ForEach-Object

Nas seções ForEach Statement e ForEach Method, criei os seguintes scripts para corrigir isso stackoverflow.com pergunta.

|_+_| |_+_|

Aqui está a versão do cmdlet ForEach-Object do mesmo script:

|_+_|

Trabalhando com PowerShell Get-Content e ForEach: Considerações Finais

Trabalhando com PowerShell Get-Content e ForEach: Considerações Finais

Os tópicos compartilhados neste guia podem ser confusos, especialmente porque abrangem 3 variantes do PowerShell ForEach. Para facilitar o entendimento, aqui está uma tabela que resume os conceitos compartilhados neste artigo.

PerguntaPara Cada DeclaraçãoPara cada métodoCmdlet ForEach-Object
Aceita entrada de Get-Content
Como ele aceita entrada de Get-Content?Pipeline |, ou dentro do bloco de condição ForEach StatementMétodo PowerShell .()Oleoduto | ou através do Objeto de entrada parâmetro
Como ele transforma a entrada de Get-Content?Cria uma variável temporal que representa cada objeto na coleçãoRepresenta cada objeto na coleção com a variável de pipeline automática do PowerShell, $_Representa cada objeto na coleção com a variável de pipeline automática do PowerShell, $_
Roteiro de exemplo?ForEach ($filename em Get-Content D:PS-Tutoriallist.txt) Out-Null
(Get-Content D:PS-Tutoriallist.txt).ForEach(
New-Item -Caminho D:PS-Tutorial -Name $_ -ItemType Directory
)
Get-Content D:PS-Tutoriallist.txt | ForEach-Object
New-Item -Caminho D:PS-Tutorial -Name $_ -ItemType Directory

É isso – nosso guia atualizado sobre como usar o PowerShell Get-Content e ForEach! Espero que tenha achado útil?

Se você achou útil, por favor, vote sim para a pergunta Foi este post útil abaixo.

Alternativamente, você pode fazer uma pergunta, deixar um comentário ou fornecer mais feedback com o formulário Deixe uma resposta encontrado no final desta página.

Por fim, para obter mais zonas S de tecnologia do PowerShell, visite nossa página de guia de instruções do Windows PowerShell. Você também pode achar nossa página Work from Home muito útil.

Referências e Leituras Adicionais

  1. ForEach-Object
  2. Obter conteudo
  3. about_Foreach