Partilhar via


Set-Content

Escreve novos conteúdos ou substitui conteúdos existentes num ficheiro.

Syntax

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 cadeias que escreve novos conteúdos ou substitui o conteúdo num ficheiro. Set-Content substitui o conteúdo existente e difere do Add-Content cmdlet que acrescenta conteúdo a um ficheiro. Para enviar conteúdo para Set-Content pode utilizar o parâmetro Valor na linha de comandos ou enviar conteúdo através do pipeline.

Se precisar de criar ficheiros ou diretórios para os seguintes exemplos, veja New-Item (Novo Item).

Exemplos

Exemplo 1: Substituir o conteúdo de vários ficheiros num diretório

Este exemplo substitui o conteúdo de vários ficheiros 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 utiliza o parâmetro Caminho para listar .txt ficheiros que começam Test* no diretório atual. O Set-Content cmdlet utiliza o parâmetro Caminho para especificar os Test*.txt ficheiros. O parâmetro Valor fornece a cadeia de texto Hello, Mundo, que substitui o conteúdo existente em cada ficheiro. O Get-Content cmdlet utiliza o parâmetro Caminho para especificar os Test*.txt ficheiros e apresenta o conteúdo de cada ficheiro na consola do PowerShell.

Exemplo 2: Create um novo ficheiro e escrever conteúdo

Este exemplo cria um novo ficheiro e escreve a data e hora atuais no ficheiro.

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

1/30/2019 09:55:08

Set-Content utiliza os parâmetros Caminho e Valor para criar um novo ficheiro com o nome DateTime.txt no diretório atual. O parâmetro Valor utiliza Get-Date para obter a data e hora atuais. Set-Content escreve o objeto DateTime no ficheiro como uma cadeia. O Get-Content cmdlet utiliza o parâmetro Caminho para apresentar o conteúdo do DateTime.txt na consola do PowerShell.

Exemplo 3: Substituir texto num ficheiro

Este comando substitui todas as instâncias do word num ficheiro 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 utiliza o parâmetro Caminho para especificar o ficheiro Notice.txt no diretório atual. O Get-Content comando é moldado com parênteses para que o comando seja concluído antes de ser enviado para baixo do pipeline.

Os conteúdos do ficheiro Notice.txt são enviados pelo pipeline para o ForEach-Object cmdlet. ForEach-Object utiliza a variável $_ automática e substitui cada ocorrência de Avisopor Atenção. Os objetos são enviados pelo pipeline para o Set-Content cmdlet. Set-Content utiliza o parâmetro Caminho para especificar o ficheiro Notice.txt e escreve o conteúdo atualizado no ficheiro.

O último Get-Content cmdlet apresenta o conteúdo do ficheiro atualizado na consola do PowerShell.

Exemplo 4: Utilizar Filtros com Set-Content

Pode especificar um filtro para o Set-Content cmdlet. Ao utilizar filtros para qualificar o parâmetro Caminho , tem de incluir um asterisco à direita (*) para indicar o conteúdo do caminho.

O comando seguinte definiu o conteúdo de todos os *.txt ficheiros no C:\Temp diretório como Valor vazio.

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

Parâmetros

-AsByteStream

Este é um parâmetro dinâmico disponibilizado pelo fornecedor fileSystem . Para obter mais informações, veja about_FileSystem_Provider.

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

Um aviso ocorre quando utiliza o parâmetro AsByteStream com o parâmetro Codificação . O parâmetro AsByteStream ignora qualquer codificação e a saída é escrita como um fluxo de bytes.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

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

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Nota

Este parâmetro não é suportado por nenhum fornecedor instalado com o PowerShell. Para representar outro utilizador ou elevar as suas credenciais ao executar este cmdlet, utilize Invoke-Command.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Encoding

Este é um parâmetro dinâmico disponibilizado pelo fornecedor fileSystem . Para obter mais informações, veja about_FileSystem_Provider.

Especifica o tipo de codificação para o ficheiro de destino. O valor predefinido é utf8NoBOM.

A codificação é um parâmetro dinâmico que o fornecedor fileSystem adiciona a Set-Content. Este parâmetro funciona apenas em unidades do sistema de ficheiros.

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

  • ascii: utiliza a codificação para o conjunto de carateres ASCII (7 bits).
  • bigendianunicode: codifica no formato UTF-16 com a ordem de bytes big-endian.
  • bigendianutf32: codifica no formato UTF-32 com a ordem de bytes big-endian.
  • oem: utiliza a codificação predefinida para ms-DOS e programas de consola.
  • unicode: codifica no formato UTF-16 com a ordem de bytes de pequeno-endiano.
  • utf7: codifica no formato UTF-7.
  • utf8: codifica no formato UTF-8.
  • utf8BOM: Codifica no formato UTF-8 com Marca de Encomenda byte (BOM)
  • utf8NoBOM: Codifica no formato UTF-8 sem Marca de Encomenda byte (BOM)
  • utf32: codifica no formato UTF-32.

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

Nota

UTF-7* já não é recomendado para utilizar. A partir do PowerShell 7.1, é escrito um aviso se especificar utf7 para o parâmetro Codificação .

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:utf8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

Especifica, como uma matriz de cadeia, um item ou itens que este cmdlet exclui na operação. O valor deste parâmetro qualifica o parâmetro Caminho . Introduza um elemento ou padrão de caminho, como *.txt. Os carateres universais são permitidos. O parâmetro Excluir só é eficaz quando o comando inclui o conteúdo de um item, como C:\Windows\*, em que o caráter universal especifica o conteúdo do C:\Windows diretório.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Filter

Especifica um filtro para qualificar o parâmetro Caminho . O fornecedor fileSystem é o único fornecedor do PowerShell instalado que suporta a utilização de filtros. Pode encontrar a sintaxe da linguagem de filtro FileSystem no about_Wildcards. Os filtros são mais eficientes do que outros parâmetros, porque o fornecedor aplica-os quando o cmdlet obtém os objetos em vez de ter o PowerShell a filtrar os objetos depois de serem obtidos.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Force

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Include

Especifica, como uma matriz de cadeia, um item ou itens que este cmdlet inclui na operação. O valor deste parâmetro qualifica o parâmetro Caminho . Introduza um elemento ou padrão de caminho, como "*.txt". Os carateres universais são permitidos. O parâmetro Incluir só é eficaz quando o comando inclui o conteúdo de um item, como C:\Windows\*, em que o caráter universal especifica o conteúdo do C:\Windows diretório.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-LiteralPath

Especifica um caminho para uma ou mais localizações. O valor do LiteralPath é utilizado exatamente como é escrito. Nenhum caráter é interpretado como carateres universais. Se o caminho incluir carateres de escape, coloque-o entre aspas. As aspas únicas indicam ao PowerShell para não interpretar os carateres como sequências de escape.

Para obter mais informações, veja about_Quoting_Rules.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NoNewline

Este é um parâmetro dinâmico disponibilizado pelo fornecedor fileSystem . Para obter mais informações, veja about_FileSystem_Provider.

As representações de cadeias dos objetos de entrada são concatenadas para formar o resultado. Não são inseridos espaços ou linhas novas entre as cadeias de saída. Não é adicionada nenhuma nova linha após a última cadeia de saída.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Devolve um objeto que representa o conteúdo. Por predefinição, este cmdlet não gera quaisquer dados.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Especifica o caminho do item que recebe o conteúdo. Os carateres universais são permitidos.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-Stream

Este é um parâmetro dinâmico disponibilizado pelo fornecedor fileSystem . Este Parâmetro só está disponível no Windows. Para obter mais informações, veja about_FileSystem_Provider.

Especifica um fluxo de dados alternativo para conteúdo. Se o fluxo não existir, este cmdlet cria-o. Os carateres universais não são suportados.

Stream é um parâmetro dinâmico que o fornecedor fileSystem adiciona a Set-Content. Este parâmetro funciona apenas em unidades do sistema de ficheiros.

Pode utilizar 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 isto como uma forma de eliminar as verificações de segurança que bloqueiam ficheiros transferidos a partir da Internet. Se verificar se um ficheiro transferido é seguro, utilize o Unblock-File cmdlet.

Este 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, bem como ficheiros.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Value

Especifica o novo conteúdo do item.

Type:Object[]
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Apresenta o que aconteceria mediante a execução do cmdlet. O cmdlet não é executado.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

Object

Pode encaminhar um objeto que contém o novo valor do item para este cmdlet.

Saídas

None

Por predefinição, este cmdlet não devolve nenhuma saída.

String

Quando utiliza o parâmetro PassThru , este cmdlet devolve uma cadeia que representa o conteúdo.

Notas

  • Set-Content foi concebido para processamento de cadeias. Se encaminhar objetos que não sejam de cadeia para Set-Content, este converte o objeto numa cadeia antes de o escrever. Para escrever objetos em ficheiros, utilize Out-File.
  • O Set-Content cmdlet foi concebido para funcionar com os dados expostos por qualquer fornecedor. Para listar os fornecedores disponíveis na sua sessão, escreva Get-PsProvider. Para obter mais informações, veja about_Providers.