Set-Content

Grava novo conteúdo ou substitui o conteúdo existente em um arquivo.

Sintaxe

Set-Content
   [-Path] <string[]>
   [-Value] <Object[]>
   [-PassThru]
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-WhatIf]
   [-Confirm]
   [-NoNewline]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <string>]
   [<CommonParameters>]
Set-Content
   [-Value] <Object[]>
   -LiteralPath <string[]>
   [-PassThru]
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-WhatIf]
   [-Confirm]
   [-NoNewline]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <string>]
   [<CommonParameters>]
Set-Content
   [-Path] <string[]>
   [-Value] <Object[]>
   [-PassThru]
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-Content
   [-Value] <Object[]>
   -LiteralPath <string[]>
   [-PassThru]
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

Set-Content é um cmdlet de processamento de cadeia de caracteres que grava novo conteúdo ou substitui o conteúdo em um arquivo. Set-Content Substitui o conteúdo existente e difere do Add-Content cmdlet que acrescenta conteúdo a um arquivo. Para enviar conteúdo Set-Content , você pode usar o parâmetro Value na linha de comando ou enviar conteúdo por meio do pipeline.

Se você precisar criar arquivos ou diretórios para os exemplos a seguir, consulte New-Item.

Exemplos

Exemplo 1: Substituir o conteúdo de vários arquivos em um diretório

Este exemplo substitui o conteúdo de vários arquivos no diretório atual.

Get-ChildItem -Path .\Test*.txt

Test1.txt
Test2.txt
Test3.txt

Set-Content -Path .\Test*.txt -Value 'Hello, World'
Get-Content -Path .\Test*.txt

Hello, World
Hello, World
Hello, World

O Get-ChildItem cmdlet usa o parâmetro Path para listar .txt arquivos que começam com Test* no diretório atual. O Set-Content cmdlet usa o parâmetro Path para especificar os Test*.txt arquivos. O parâmetro Value fornece a cadeia de caracteres de texto Hello, World que substitui o conteúdo existente em cada arquivo. O Get-Content cmdlet usa o parâmetro Path para especificar os Test*.txt arquivos e exibe o conteúdo de cada arquivo no console do PowerShell.

Exemplo 2: Criar um novo arquivo e gravar conteúdo

Este exemplo cria um novo arquivo e grava a data e a hora atuais no arquivo.

Set-Content -Path .\DateTime.txt -Value (Get-Date)
Get-Content -Path .\DateTime.txt

1/30/2019 09:55:08

Set-Contentusa os parâmetros Path e Value para criar um novo arquivo chamado DateTime.txt no diretório atual. O parâmetro Value é usado Get-Date para obter a data e a hora atuais. Set-Content grava o objeto DateTime no arquivo como uma cadeia de caracteres. O Get-Content cmdlet usa o parâmetro Path para exibir o conteúdo de DateTime.txt no console do PowerShell.

Exemplo 3: Substituir texto em um arquivo

Este comando substitui todas as instâncias de word dentro de um arquivo existente.

Get-Content -Path .\Notice.txt

Warning
Replace Warning with a new word.
The word Warning was replaced.

(Get-Content -Path .\Notice.txt) |
    ForEach-Object {$_ -Replace 'Warning', 'Caution'} |
        Set-Content -Path .\Notice.txt
Get-Content -Path .\Notice.txt

Caution
Replace Caution with a new word.
The word Caution was replaced.

O Get-Content cmdlet usa o parâmetro Path para especificar o arquivo Notice.txt no diretório atual. O Get-Content comando é encapsulado entre parênteses para que o comando seja concluído antes de ser enviado pelo pipeline.

O conteúdo do arquivo Notice.txt é enviado pelo pipeline para o ForEach-Object cmdlet. ForEach-Object usa a variável $_ automática e substitui cada ocorrência de Aviso com Cuidado. Os objetos são enviados pelo pipeline para o Set-Content cmdlet. Set-Content usa o parâmetro Path para especificar o arquivo Notice.txt e grava o conteúdo atualizado no arquivo.

O último Get-Content cmdlet exibe o conteúdo do arquivo atualizado no console do PowerShell.

Exemplo 4: Usar filtros com Set-Content

Você pode especificar um filtro para o Set-Content cmdlet. Ao usar filtros para qualificar o parâmetro Path , você precisa incluir um asterisco à direita (*) para indicar o conteúdo do caminho.

O comando a seguir define o conteúdo de todos os *.txt C:\Temp arquivos no diretório para o Valor vazio.

Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"

Parâmetros

-AsByteStream

Esse é um parâmetro dinâmico disponibilizado pelo provedor FileSystem. Para obter mais informações, consulte about_FileSystem_Provider.

Especifica que o conteúdo deve ser gravado como um fluxo de bytes. Esse parâmetro foi introduzido no PowerShell 6.0.

Um aviso ocorre quando você usa o parâmetro AsByteStream com o parâmetro Coding . O parâmetro AsByteStream ignora qualquer codificação e a saída é gravada como um fluxo de bytes.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Confirm

Solicita sua confirmação antes de executar o cmdlet.

Tipo:SwitchParameter
Aliases:cf
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Credential

Observação

Esse parâmetro não tem suporte de nenhum provedor instalado com o PowerShell. Para representar outro usuário ou elevar suas credenciais ao executar esse cmdlet, use Invoke-Command.

Tipo:PSCredential
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Encoding

Esse é um parâmetro dinâmico disponibilizado pelo provedor FileSystem. Para obter mais informações, consulte about_FileSystem_Provider.

Especifica o tipo de codificação para o arquivo de destino. O valor padrão é utf8NoBOM.

A codificação é um parâmetro dinâmico que o provedor FileSystem adiciona ao Set-Content. Esse parâmetro funciona somente em unidades de sistema de arquivos.

Os valores aceitáveis para este parâmetro são os seguintes:

  • ascii: Usa a codificação para o conjunto de caracteres ASCII (7 bits).
  • ansi: Usa a codificação para a página de código ANSI da cultura atual. Essa opção foi adicionada no PowerShell 7.4.
  • bigendianunicode: Codifica no formato UTF-16 usando a ordem de bytes big-endian.
  • bigendianutf32: Codifica no formato UTF-32 usando a ordem de bytes big-endian.
  • oem: Usa a codificação padrão para MS-DOS e programas de console.
  • unicode: Codifica no formato UTF-16 usando a ordem de bytes little-endian.
  • utf7: Codifica no formato UTF-7.
  • utf8: Codifica no formato UTF-8.
  • utf8BOM: Codifica no formato UTF-8 com Marca de Ordem de Byte (BOM)
  • utf8NoBOM: Codifica no formato UTF-8 sem Marca de Ordem de Byte (BOM)
  • utf32: Codifica no formato UTF-32.

A partir do PowerShell 6.2, o parâmetro Encoding também permite IDs numéricas de páginas de código registradas (como -Encoding 1251) ou nomes de cadeia de caracteres de páginas de código registradas (como -Encoding "windows-1251"). Para obter mais informações, consulte a documentação do .NET para Encoding.CodePage.

A partir do PowerShell 7.4, você pode usar o Ansi valor do parâmetro Encoding para passar a ID numérica da página de código ANSI da cultura atual sem precisar especificá-la manualmente.

Observação

O uso de UTF-7* não é mais recomendado. A partir do PowerShell 7.1, um aviso será escrito se você especificar utf7 para o parâmetro Codificação .

Tipo:Encoding
Valores aceitos:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Cargo:Named
Valor padrão:utf8NoBOM
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Exclude

Especifica, como uma matriz de cadeia de caracteres, um item ou itens que esse cmdlet exclui na operação. O valor desse parâmetro qualifica o parâmetro Path . Insira um elemento ou padrão de caminho, como *.txt. Caracteres curinga são permitidos. O parâmetro Exclude é efetivo somente quando o comando inclui o conteúdo de um item, como C:\Windows\*, em que o caractere curinga especifica o conteúdo do C:\Windows diretório.

Tipo:String[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:True

-Filter

Especifica um filtro para qualificar o parâmetro Path . O provedor FileSystem é o único provedor do PowerShell instalado que dá suporte ao uso de filtros. Você pode encontrar a sintaxe da linguagem de filtro FileSystem em about_Wildcards. Os filtros são mais eficientes do que outros parâmetros, pois o provedor os aplica quando o cmdlet obtém os objetos, em vez de fazer com que o PowerShell filtre os objetos depois que eles são recuperados.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:True

-Force

Força o cmdlet a definir o conteúdo de um arquivo, mesmo que o arquivo seja somente leitura. A implementação varia de provedor para provedor. Para obter mais informações, consulte about_Providers. O parâmetro Force não substitui as restrições de segurança.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Include

Especifica, como uma matriz de cadeia de caracteres, um item ou itens que esse cmdlet inclui na operação. O valor desse parâmetro qualifica o parâmetro Path . Insira um elemento ou padrão de caminho, como "*.txt". Caracteres curinga são permitidos. O parâmetro Include é efetivo somente quando o comando inclui o conteúdo de um item, como C:\Windows\*, em que o caractere curinga especifica o conteúdo do C:\Windows diretório.

Tipo:String[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:True

-LiteralPath

Especifica um caminho para um ou mais locais. O valor de LiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. As aspas simples informam ao PowerShell para não interpretar nenhum caractere como sequências de escape.

Para obter mais informações, consulte about_Quoting_Rules.

Tipo:String[]
Aliases:PSPath, LP
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-NoNewline

Esse é um parâmetro dinâmico disponibilizado pelo provedor FileSystem. Para obter mais informações, consulte about_FileSystem_Provider.

As representações de cadeia de caracteres dos objetos de entrada são concatenadas para formar a saída. Nenhum espaço ou nova linha é inserido entre as strings de saída. Nenhuma nova linha é adicionada após a última cadeia de caracteres de saída.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-PassThru

Retorna um objeto que representa o conteúdo. Por padrão, este cmdlet não gera saída.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Path

Especifica o caminho do item que recebe o conteúdo. Caracteres curinga são permitidos.

Tipo:String[]
Cargo:0
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:True

-Stream

Esse é um parâmetro dinâmico disponibilizado pelo provedor FileSystem. Este parâmetro está disponível apenas no Windows. Para obter mais informações, consulte about_FileSystem_Provider.

Especifica um fluxo de dados alternativo para o conteúdo. Se o fluxo não existir, esse cmdlet o criará. Não há suporte para caracteres curinga.

Stream é um parâmetro dinâmico que o provedor FileSystem adiciona ao Set-Content. Esse parâmetro funciona somente em unidades de sistema de arquivos.

Você pode usar o Set-Content cmdlet para criar ou atualizar o conteúdo de qualquer fluxo de dados alternativo, como Zone.Identifier. No entanto, não recomendamos isso como uma forma de eliminar as verificações de segurança que bloqueiam arquivos baixados da Internet. Se você verificar se um arquivo baixado é seguro, use o Unblock-File cmdlet.

Esse parâmetro foi introduzido no PowerShell 3.0. A partir do PowerShell 7.2, pode definir o conteúdo de fluxos de dados alternativos de diretórios, Set-Content bem como arquivos.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Value

Especifica o novo conteúdo para o item.

Tipo:Object[]
Cargo:1
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

Tipo:SwitchParameter
Aliases:wi
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

Object

Você pode canalizar um objeto que contém o novo valor do item para esse cmdlet.

Saídas

None

Por padrão, esse cmdlet não retorna nenhuma saída.

String

Quando você usa o parâmetro PassThru , esse cmdlet retorna uma cadeia de caracteres que representa o conteúdo.

Observações

  • Set-Content é projetado para processamento de strings. Se você canalizar objetos que não sejam de cadeia de caracteres para Set-Content, ele converterá o objeto em uma cadeia de caracteres antes de gravá-lo. Para gravar objetos em arquivos, use Out-File.
  • O Set-Content cmdlet foi projetado para funcionar com os dados expostos por qualquer provedor. Para listar os provedores disponíveis em sua sessão, digite Get-PsProvider. Para obter mais informações, consulte about_Providers.