Partilhar via


Set-Content

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

Sintaxe

Path (Default) - FileSystem provider

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>]

LiteralPath - FileSystem provider

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>]

Path (Default) - All providers

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

LiteralPath - All providers

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 cmdlet Add-Content que acrescenta conteúdo a um arquivo. Para enviar conteúdo para Set-Content você pode usar o parâmetro Value na linha de comando ou enviar conteúdo pelo 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 cmdlet Get-ChildItem usa o parâmetro Path para listar .txt arquivos que começam com Test* no diretório atual. O cmdlet Set-Content usa o parâmetro Path para especificar os arquivos Test*.txt. O parâmetro Value fornece a cadeia de caracteres de texto Hello, World que substitui o conteúdo existente em cada arquivo. O cmdlet Get-Content usa o parâmetro Path para especificar os arquivos Test*.txt e exibe o conteúdo de cada arquivo no console do PowerShell.

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

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

Set-Content -Path .\DateTime.txt -Value (Get-Date)
Get-Content -Path .\DateTime.txt
1/30/2019 09:55:08

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

Exemplo 3: Substituir texto num ficheiro

Este comando substitui todas as instâncias do 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 cmdlet Get-Content usa o parâmetro Path para especificar o arquivo Notice.txt no diretório atual. O comando Get-Content é encapsulado entre parênteses para que o comando termine antes de ser enviado pelo pipeline.

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

O cmdlet Last Get-Content 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 cmdlet Set-Content. 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 arquivos *.txt no diretório C:\Temp para o valor vazio.

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

Parâmetros

-AsByteStream

Este é 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 escrito 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 Encoding. O parâmetro AsByteStream ignora qualquer codificação e a saída é gravada como um fluxo de bytes.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Confirm

Solicita confirmação antes de executar o cmdlet.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False
Aliases:Cf.

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Credential

Observação

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

Propriedades dos parâmetros

Tipo:PSCredential
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

-Encoding

Este é 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 predefinido é utf8NoBOM.

A codificação é um parâmetro dinâmico que o provedor FileSystem adiciona ao Set-Content. Este parâmetro funciona apenas em unidades de disco do 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).
  • bigendianunicode: Codifica no formato UTF-16 usando a ordem de bytes big-endian.
  • bigendianutf32: Codifica no formato UTF-32 utilizando a ordem de bytes big-endian.
  • oem: Utiliza a codificação predefinida para MS-DOS e programas de consola.
  • unicode: Codifica em formato UTF-16 utilizando a ordem de bytes little-endian.
  • utf7: Codifica em formato UTF-7.
  • utf8: Codifica em formato UTF-8.
  • utf8BOM: Codifica no formato UTF-8 com Byte Order Mark (BOM)
  • utf8NoBOM: Codifica no formato UTF-8 sem Byte Order Mark (BOM)
  • utf32: Codifica no formato UTF-32.

A partir do PowerShell 6.2, o parâmetro Encoding também permite IDs numéricos 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.

Observação

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

Propriedades dos parâmetros

Tipo:Encoding
Default value:utf8NoBOM
Valores aceites:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos: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 coringa são permitidos. O parâmetro Exclude só é efetivo quando o comando inclui o conteúdo de um item, como C:\Windows\*, onde o caractere curinga especifica o conteúdo do diretório C:\Windows.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:True
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Filter

Especifica um filtro para qualificar o parâmetro Path. O provedor FileSystem é o único provedor do PowerShell instalado que oferece suporte ao uso de filtros. A sintaxe da linguagem de filtro do FileSystem pode ser encontrada em about_Wildcards. Os filtros são mais eficientes do que outros parâmetros, porque 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.

Propriedades dos parâmetros

Tipo:String
Default value:None
Suporta carateres universais:True
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-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 fornecedor para fornecedor. Para obter mais informações, consulte about_Providers. O parâmetro Force não substitui as restrições de segurança.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos: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 coringa são permitidos. O parâmetro Include só é efetivo quando o comando inclui o conteúdo de um item, como C:\Windows\*, onde o caractere curinga especifica o conteúdo do diretório C:\Windows.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:True
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-LiteralPath

Especifica um caminho para um ou mais locais. O valor de LiteralPath é utilizado exatamente como foi escrito. Nenhum caractere é interpretado como carta curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples indicam ao PowerShell para não interpretar quaisquer caracteres como sequências de escape.

Para obter mais informações, consulte about_Quoting_Rules.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:False
NãoMostrar:False
Aliases:PSPath, LP

Conjuntos de parâmetros

LiteralPath
Position:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

-NoNewline

Este é 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 novas linhas são inseridos entre as cadeias de caracteres de saída. Nenhuma nova linha é adicionada após a última cadeia de caracteres de saída.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-PassThru

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

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Path

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

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:True
NãoMostrar:False

Conjuntos de parâmetros

Path
Position:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

-Stream

Este é um parâmetro dinâmico disponibilizado pelo provedor FileSystem. Este parâmetro só está disponível 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, este cmdlet o cria. Não há suporte para caracteres curinga.

Stream é um parâmetro dinâmico que o provedor de FileSystem adiciona ao . Este parâmetro funciona apenas em unidades de disco do sistema de arquivos.

Você pode usar o cmdlet Set-Content 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 cmdlet Unblock-File.

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

Propriedades dos parâmetros

Tipo:String
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Value

Especifica o novo conteúdo do item.

Propriedades dos parâmetros

Tipo:

Object[]

Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:1
Obrigatório:True
Valor do pipeline:True
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

-WhatIf

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

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False
Aliases:Wi

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

Object

Você pode canalizar um objeto que contém o novo valor para o item para este 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.

Notas

  • Set-Content é projetado para processamento de cadeia de caracteres. 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 cmdlet Set-Content foi projetado para trabalhar 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.