Cmdlet Set-Content do PowerShell
-
O Cmdlet
Set-Contentno PowerShell -
Use o Cmdlet
Set-Contentpara Escrever Conteúdo de Texto em um Único Arquivo -
Use o Cmdlet
Set-Contentpara Substituir o Conteúdo de Texto em Múltiplos Arquivos -
Use o
Set-Contentpara Passar o Conteúdo de Texto Através de um PIPE
Às vezes, podemos precisar escrever o mesmo conteúdo de texto em vários arquivos de texto. O PowerShell fornece um cmdlet útil para escrever conteúdo de texto via linha de comando.
Neste artigo, focaremos no cmdlet Set-Content.
O Cmdlet Set-Content no PowerShell
O cmdlet Set-Content escreve novo conteúdo de texto ou substitui o texto existente em um arquivo. Isso é mais semelhante ao operador > no Linux.
O cmdlet Set-Content difere do cmdlet de processamento de string Add-Content, que adiciona texto a um arquivo especificado. O sc pode ser usado como um alias para o comando Set-Content.
Sintaxe:
Set-Content
[-Path_to_file] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-NoNewline]
[-Encoding <Encoding>]
[-AsByteStream]
[-Stream <string>]
[<CommonParameters>]
O comando aceita uma quantidade considerável de argumentos, e o propósito de alguns foi descrito na seção seguinte.
| Parâmetro | Descrição |
|---|---|
-Path_to_file |
Você pode especificar um caminho de arquivo de texto existente ou criar um novo no caminho dado. |
-Value |
Este parâmetro é usado para passar o conteúdo de texto que você escreverá. |
-Force |
O argumento -Force substitui o conteúdo no arquivo somente leitura. |
-Encoding |
A codificação de texto do arquivo de destino é configurada como utf8NoBOM por padrão. |
-Exclude |
Os itens que precisam ser excluídos nesta operação são especificados como um array de strings. |
-Include |
Este é o oposto do argumento -Exclude. Este argumento especifica um array de itens que precisam ser incluídos na operação Set-Content. |
-PassThru |
Quando o argumento PassThru é especificado, o comando exibe o conteúdo de texto que foi adicionado ao arquivo de texto. |
Geralmente, o parâmetro -Value é usado para especificar o conteúdo de texto escrito no arquivo. Além disso, você pode canalizar o conteúdo de texto de outro objeto também.
Se você passar um objeto não-string para o comando Set-Content, ele primeiro converterá o objeto não-string em uma string e a escreverá no arquivo.
Use o Cmdlet Set-Content para Escrever Conteúdo de Texto em um Único Arquivo
Vamos escrever conteúdo de texto em um arquivo chamado sometext.txt que não existe atualmente. Assim, o comando Set-Content criaria este arquivo primeiro e escreveria o conteúdo passado com o argumento -Value.
Comando:
Set-Content -Path D:\codes\sometext.txt -Value "This should create a new file called sometext.txt and write this text to it..."

Saída:

Use o Cmdlet Set-Content para Substituir o Conteúdo de Texto em Múltiplos Arquivos
Vamos assumir que temos três arquivos file1.txt, file2.txt e file3.txt. Substituiremos o conteúdo desses três arquivos pelo seguinte texto.
Hello, i would be appeared in all the three files!
Neste caso, o comando Set-Content usa caracteres curinga para corresponder aos três arquivos dados.
Comando:
Set-Content -Path D:\codes\file*.txt -Value "Hello, i would be appeared in all the three files!"

Os três arquivos correspondem ao padrão especificado por file* txt, o que força o comando a corresponder a todos os arquivos que começam com a frase file.
Saída:

Use o Set-Content para Passar o Conteúdo de Texto Através de um PIPE
Não é necessário especificar sempre o argumento -Value. Em vez disso, podemos PIPE um objeto de texto para o Set-Content da seguinte forma.
Comando:
(Get-Content D:\codes\file1.txt).replace('all the three files!', 'file4.txt') | Set-Content D:\codes\file4.txt
O cmdlet Get-Content lê o conteúdo de texto do arquivo file1.txt. Em seguida, ele usa o comando replace para substituir o texto todos os três arquivos! pelo file4.txt.
Finalmente, o texto construído seria escrito no arquivo file4.txt.
Saída:

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.
